/ / R crea una lista, en lugar de un marco de datos - r

R crea una lista, en lugar de un marco de datos - r

Quiero escribir un cuadro de datos en un archivo usando el write función, sin embargo esto no funciona, porque data.frame() lo crea como una lista.

Ejemplo reproductivo:

data <- data.frame(cbind(1:2,3:4))
typeof(data)
data
#  X1 X2
#1  1  3
#2  2  4
#> typeof(data)
#[1] "list"

Ahora cuando quiero escribir en un archivo usando

write(data,"data.txt")

Me sale un error diciendo

Error en cat (lista (...), archivo, sep, relleno, etiquetas, anexar): el argumento 1 (tipo "lista") no puede ser manejado por "cat"

Lo que obviamente sucede porque los datos son una lista, pero no entiendo por qué es una lista. Estoy ejecutando R 3.1.3

Respuestas

6 para la respuesta № 1

En realidad, tu data es un data.frame:

class(data)
# [1] "data.frame"

El problema es ese write no se adapta bien a los marcos de datos, pero funcionaría con matrices:

write(as.matrix(data), "test.txt")

Si desea escribir el marco de datos en un archivo use write.table:

write.table(data, "test.txt")

El mensaje de error viene del subyacente cat función y el hecho de que una data.frame Conceptualmente es una lista de vectores de la misma longitud.


0 para la respuesta № 2

Qué tal si write.table(data,"data.txt")?


0 para la respuesta № 3

Un data.frame es una lista de estructuras vectoriales de la misma longitud. Puedes usar typeof (df) para ver que muestra el tipo de df (aquí un ejemplo data.frame) como "lista".

Puede usar write.table para escribir un data.frame en un archivo de texto como se muestra a continuación:

write.table(df, "filename.txt", sep = "t", row.names = FALSE)