Question Exporter une liste dans un fichier CSV ou TXT en R


Je suis désolé de poser cette question. Je suis très gentil avec R. Je sais qu'il y a beaucoup de sujets liés au même problème. J'ai compris que nous ne pouvons pas exporter une table si l'un de ses éléments est une liste mais je n'ai pas réussi à résoudre mon problème cependant. J'ai donc une liste dans R et je veux l'exporter dans un fichier CSV ou TXT. Voici le message d'erreur que j'obtiens quand j'exécute ceci write.table commande:

write.table(mylist,"test.txt",sep=";")

Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol,  : 
unimplemented type 'list' in 'EncodeElement'

Voici le premier élément de ma liste:

$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

Merci à tous pour votre aide à l'avance!


22
2017-12-21 22:41


origine


Réponses:


Donc, essentiellement, vous avez une liste de listes, mylist étant le nom de la liste principale et le premier élément étant $f10010_1 qui est imprimé (et qui contient 4 listes supplémentaires).

Je pense que la façon la plus simple de le faire est d'utiliser lapply avec l'ajout de dataframe (en supposant que chaque liste dans chaque élément de la liste principale (comme les listes dans $f10010_1) a la même longueur):

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

Le ci-dessus va convertir $f10010_1 dans un dataframe, faites la même chose avec tous les autres éléments et ajoutez-les l'un en dessous de l'autre dans 'test.csv'

Vous pouvez aussi taper ?write.table sur votre console pour vérifier quels autres arguments vous devez transmettre lorsque vous écrivez la table dans un fichier csv, par ex. si vous avez besoin de noms de lignes ou de noms de colonnes, etc.


14
2017-12-21 23:11



Je pense que le plus manière simple de faire cela utilise capture.output, Ainsi;

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

Facile!


28
2017-08-23 14:13



Vous pouvez simplement envelopper votre liste en tant que data.frame (data.frame est en fait un type spécial de liste). Voici un exemple:

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)

ou bien vous pouvez utiliser write.csv (un wrapper autour de write.table). Pour la conversion de la liste, vous pouvez utiliser les deux as.data.frame(mylist) et data.frame(mylist).

Pour aider à faire un exemple reproductible, vous pouvez utiliser des fonctions comme dput sur vos données.


2
2017-12-21 22:54



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

de R: Exporter et importer une liste dans un fichier .txt  https://stackoverflow.com/users/1855677/42 est la seule chose qui a fonctionné pour moi.


2
2018-06-03 00:17