Pregunta Crear un marco de datos vacío con nombres de columna asignando un vector de cadena? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

1.crear un marco de datos vacío

y <- data.frame()

2. Asignar x, un vector de cadena, a y como sus nombres de columna

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

Resultado:

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

En realidad, la longitud x es dinámica, por lo

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

no es una manera eficiente de nombrar la columna. ¿Cómo puedo resolver el problema? Gracias


20
2017-09-22 08:40


origen


Respuestas:


Qué tal si,

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

Para hacer todas estas operaciones en un solo liner

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

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

79
2017-09-22 08:53



Preguntas populares