Estoy empezando con R y encontré un comportamiento extraño: al insertar la primera fila en un marco de datos vacío, los nombres de columna originales se pierden.R: perder nombres de columna al agregar filas a un marco de datos vacío
ejemplo:
a<-data.frame(one = numeric(0), two = numeric(0))
a
#[1] one two
#<0 rows> (or 0-length row.names)
names(a)
#[1] "one" "two"
a<-rbind(a, c(5,6))
a
# X5 X6
#1 5 6
names(a)
#[1] "X5" "X6"
Como se puede ver, los nombres de las columnas uno y dos fueron reemplazados por X5 X6 y .
¿Podría alguien decirme por qué sucede esto y existe una forma correcta de hacerlo sin perder los nombres de las columnas?
Una solución de escopeta sería guardar los nombres en un vector auxiliar y luego agregarlos cuando haya terminado de trabajar en el marco de datos.
Gracias
Contexto:
he creado una función que recoge algunos datos y los añade como una nueva fila a una trama de datos recibida como parámetro. Creo el marco de datos, repito a través de mis fuentes de datos, pasando el data.frame a cada llamada de función para completar con sus resultados.
Creo que en el código se ignora el 'a' 'dentro rbind', por lo que es de hecho un equivalente a' <- hoja.de.datos (uno = 5, dos = 6) '. Pero puedo estar equivocado. – juba
+1 Normalmente uso este enfoque: tenga en cuenta que puede simplemente inicializar 'a' en el vector vacío:' a <- c() '. –
@juba, ese puede ser el caso, porque el data.frame 'a' está vacío. –