R:将列表打印到文本文件

pms*_*pms 43 r list

我在R中有这样一个列表:

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

[[2]]
[1] 1693237   13462
Run Code Online (Sandbox Code Playgroud)

列表的每个元素都有不同数量的元素.

我想将此列表打印到这样的文本文件:

mylist.txt
234984  10354  41175 932711 426928
1693237   13462
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用sink(),但它打印元素[[x]],[y]的名称,我想避免它.此外,由于列表的每个元素中的元素数量不同,因此无法使用write()或write.table().

nic*_*ico 51

未经测试,但它应该工作(评论后编辑)

lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
Run Code Online (Sandbox Code Playgroud)

  • 实际上`write`被修改为`cat`(参见代码),所以替代可以是`lapply(mylist,cat,"\n",file ="test.txt",append = TRUE)`. (12认同)
  • @Marek每次我在我的列表上使用它时,它会显示'cat in list(list(...),file,sep,fill,labels,append):参数1(类型'list')不能被'cat'处理"除非我读错了,否则我已经尝试过每个人对我的列表对象的建议,但没有一个是有效的. (5认同)
  • 测试.工作.您也可以使用简写:`lapply(mylist,write,"test2.txt",append = TRUE) (4认同)
  • 只需要一个重要的细节,你需要指定写函数的ncolumns参数,否则行只会被修剪为5列:`lapply(mylist,write,"test3.txt",append = T,ncolumns = 1000)` (4认同)
  • @Kerry我只能猜测,但我想你的列表是嵌套的(列表列表).您可以通过`sapply(mylist,class)`检查它,如果有值""list"`表示你有嵌套列表. (3认同)

小智 25

我在Nico回答的评论中看到,有些人遇到了保存列表的问题.我的一些工作也遇到了这个问题,并希望有人找到比我发现的更好的答案,但没有人回答他们的问题.

所以:@ali,@ FoxKerckhof和@Kerry我发现保存嵌套列表的唯一方法是使用sink(),如user6585653建议(我试图投票他的答案,但不能).这不是最好的方法,因为您链接文本文件,这意味着它可以很容易地写入,或者如果您不取消接收器,其他结果可能会保存在该文件中.请参阅下面的代码.

sink("mylist.txt")
print(mylist)
sink()
Run Code Online (Sandbox Code Playgroud)

确保代码末尾有接收器(),以便取消接收器.


Mar*_*rek 13

其他方式

writeLines(unlist(lapply(mylist, paste, collapse=" ")))
Run Code Online (Sandbox Code Playgroud)


小智 8

这是使用接收器的另一种方式:

sink(sink_dir_and_file_name); print(yourList); sink()


小智 6

格式不会完全相同,但它确实将数据写入文本文件,dget当您想将其作为列表再次检索时,R 将能够重新读取它。

dput(mylist, "mylist.txt")
Run Code Online (Sandbox Code Playgroud)