web-dev-qa-db-fra.com

Créer un bloc de données vide avec des noms de colonne en affectant un vecteur de chaîne?

1.créer un cadre de données vide

y <- data.frame()

2.affectez x, un vecteur chaîne, à y comme nom de colonne

x <- c("name", "age", "gender")
colnames(y) <- x

Résultat:

Error in `colnames<-`(`*tmp*`, value = c("name", "age", "gender")) : 
  'names' attribute [3] must be the same length as the vector [0]

En fait, la longueur x est dynamique, donc

y <- data.frame(name=character(), age=numeric(), gender=logical())

n’est pas un moyen efficace de nommer la colonne. Comment puis-je résoudre le problème? Merci

56
Eric Chang

Que diriez-vous,

df <- data.frame(matrix(ncol = 3, nrow = 0))
x <- c("name", "age", "gender")
colnames(df) <- x

Faire toutes ces opérations en une ligne

setNames(data.frame(matrix(ncol = 3, nrow = 0)), c("name", "age", "gender"))

#[1] name   age    gender
#<0 rows> (or 0-length row.names)
159
Ronak Shah