web-dev-qa-db-fra.com

R: Imprimer la liste dans un fichier texte

J'ai dans R une liste comme celle-ci:

> print(head(mylist,2))
[[1]]
[1] 234984  10354  41175 932711 426928

[[2]]
[1] 1693237   13462

Chaque élément de la liste a un nombre différent d'éléments.

Je voudrais imprimer cette liste dans un fichier texte comme ceci:

mylist.txt
234984  10354  41175 932711 426928
1693237   13462

Je sais que je peux utiliser sink (), mais il affiche les noms des éléments [[x]], [y] et je veux l'éviter. De plus, en raison du nombre différent d'éléments dans chaque élément de la liste, il n'est pas possible d'utiliser write () ou write.table ().

40
pms

Non testé, mais il devrait travail (édité après les commentaires)

lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
49
nico

J'ai vu dans les commentaires de la réponse de Nico que certaines personnes rencontraient des problèmes d'enregistrement des listes contenant des listes. J'ai également rencontré ce problème avec certains de mes travaux et espérais que quelqu'un trouverait une meilleure réponse que celle que j'ai trouvée, mais personne n'a répondu à leur problème. 

Ainsi: @ ALi, @FMKerckhof et @Kerry, la seule façon pour enregistrer une liste imbriquée consiste à utiliser sink () comme suggéré par l'utilisateur6585653 (j'ai essayé de voter sa réponse mais je n'ai pas pu). Ce n'est pas la meilleure façon de le faire, car vous liez le fichier texte, ce qui signifie qu'il peut être facilement écrasé ou que d'autres résultats peuvent être enregistrés dans ce fichier si vous n'annulez pas le collecteur. Voir ci-dessous pour le code.

sink("mylist.txt")
print(mylist)
sink()

Assurez-vous d'avoir l'évier () à la fin de votre code pour pouvoir l'annuler.

20
Jason

Autrement

writeLines(unlist(lapply(mylist, paste, collapse=" ")))
12
Marek

en fonction de vos goûts, une alternative à la réponse de nico:

d<-lapply(mylist, write, file=" ... ", append=T);
3
Carl

Voici un autre

cat(sapply(mylist, toString), file, sep="\n")
1
user6137425

Le format ne sera pas complètement identique, mais les données sont écrites dans un fichier texte et R pourra les relire à l’aide de dget lorsque vous souhaitez les récupérer à nouveau sous forme de liste.

dput(mylist, "mylist.txt")
0
Danny Boy150

Je résous ce problème en mélangeant les solutions ci-dessus. 

sink("/Users/my/myTest.dat")
writeLines(unlist(lapply(k, paste, collapse=" ")))
sink()

Je pense que ça marche bien

0
kujungmul