Exportar una lista a un archivo CSV o TXT en R

Lamento hacer esta pregunta. Soy muy novato con R. Sé que hay muchos hilos relacionados con el mismo problema. Entendí que no podemos exportar una tabla si uno de sus elementos es una lista, pero no pude resolver mi problema. Entonces, tengo una lista en R y quiero exportarla a un archivo CSV o TXT. Aquí está el mensaje de error que recibo cuando ejecuto este comando write.table :

 write.table(mylist,"test.txt",sep=";") Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, : unimplemented type 'list' in 'EncodeElement' 

Aquí está el primer elemento de mi lista:

 $f10010_1 $f10010_1$mots [1] X16 ESPRESSO TDISC TASSIMO [5] CARTE NOIRE A LAVAZZA [9] MALONGO MIO MODO 123 [13] CAPSULES DOSES 78G LONG [17] SPRESSO CAFE 120G CLASSIC [21] 104G 128G AROMATIQUE INTENSE [25] 112G 156G 520G 5X16 [29] PROMO TRIPACK X24 126G [33] 16 4X16 APPASSIONATAMENTE APPASSIONATEMENTE [37] BRESIL CAPSUL COLOMBIE CORSE [41] CREMOSAMENTE DELICATI DELIZIOSAMENTE DIVINAMENTE [45] DOLCEMENTE EQI GRAND GRANDE [49] GT GUATEMALA HAITI INTENSAMENTE [53] ITALIAN MAGICAMENTE MERE MOKA78G [57] PETITS PRODUCT PURSMATIN RESERVE [61] RISTRETO SOAVEMENTE STYLE X36 64 Levels: 104G 112G 120G 123 126G 128G 156G 16 4X16 520G 5X16 78G ... X36 $f10010_1$nblabel [1] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 [27] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 [53] 32 32 32 32 32 32 32 32 32 32 32 32 Levels: 32 $f10010_1$Freq [1] 18 16 16 15 14 14 9 9 9 9 9 8 8 8 7 7 7 6 5 5 3 3 3 3 2 2 [27] 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [53] 1 1 1 1 1 1 1 1 1 1 1 1 $f10010_1$pct [1] 0.56250 0.50000 0.50000 0.46875 0.43750 0.43750 0.28125 0.28125 0.28125 [10] 0.28125 0.28125 0.25000 0.25000 0.25000 0.21875 0.21875 0.21875 0.18750 [19] 0.15625 0.15625 0.09375 0.09375 0.09375 0.09375 0.06250 0.06250 0.06250 [28] 0.06250 0.06250 0.06250 0.06250 0.03125 0.03125 0.03125 0.03125 0.03125 [37] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 [46] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 [55] 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 0.03125 [64] 0.03125 

¡Gracias a todos por su ayuda con anticipación!

Entonces, esencialmente, usted tiene una lista de listas, siendo mylist el nombre de la lista principal y el primer elemento que es $f10010_1 que se imprime (y que contiene 4 listas más).

Creo que la forma más fácil de hacerlo es usar lapply con la adición de dataframe (suponiendo que cada lista dentro de cada elemento de la lista principal (como las listas en $f10010_1 ) tiene la misma longitud):

 lapply(mylist, function(x) write.table( data.frame(x), 'test.csv' , append= T, sep=',' )) 

Lo anterior convertirá $f10010_1 en un dataframe, luego hará lo mismo con todos los demás elementos y anexará uno debajo del otro en ‘test.csv’

También puede escribir ?write.table en su consola para verificar qué otros argumentos necesita pasar cuando escribe la tabla en un archivo csv, por ejemplo, si necesita nombres de fila o de columna, etc.

Creo que la forma más sencilla de hacerlo es usar capture.output , por lo tanto;

 capture.output(summary(mylist), file = "My New File.txt") 

¡Fácil!

Simplemente puede ajustar su lista como un data.frame (data.frame es de hecho un tipo especial de lista). Aquí hay un ejemplo:

 mylist = list() mylist[["a"]] = 1:10 mylist[["b"]] = letters[1:10] write.table(as.data.frame(mylist),file="mylist.csv", quote=F,sep=",",row.names=F) 

o alternativamente puede usar write.csv (un contenedor alrededor de write.table). Para la conversión de la lista, puede usar tanto as.data.frame(mylist) y data.frame(mylist) .

Para ayudar a hacer un ejemplo reproducible , puede usar funciones como dput en sus datos.

cat(capture.output(print(my.list), file="test.txt")

desde R: Exportar e importar una lista al archivo .txt https://stackoverflow.com/users/1855677/42 es lo único que funcionó para mí.

    Intereting Posts