我在R中有这样一个列表:
> print(head(mylist,2))
[[1]]
[1] 234984 10354 41175 932711 426928
[[2]]
[1] 1693237 13462
列表中的每个元素都有不同数量的元素。
我想将此列表打印到这样的文本文件中:
mylist.txt
234984 10354 41175 932711 426928
1693237 13462
我知道我可以使用sink(),但它打印元素[[x]],[y]的名称,我想避免它。另外,由于列表中每个元素的元素数量不同,因此无法使用write()或write.table()。
答案 0 :(得分:50)
未经测试,但应该工作(在评论后编辑)
lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
答案 1 :(得分:22)
我在Nico回答的评论中看到,有些人遇到了保存列表的问题。我的一些工作也遇到了这个问题,并希望有人找到比我发现的更好的答案,但没有人回答他们的问题。
所以: @ali,@ FoxKerckhof和@Kerry我发现保存嵌套列表的唯一方法是使用sink(),如user6585653建议(我试图投票他的答案,但不能)。这不是最好的方法,因为您链接文本文件,这意味着它可以很容易地写入,或者如果您不取消接收器,其他结果可能会保存在该文件中。请参阅下面的代码。
sink("mylist.txt")
print(mylist)
sink()
确保代码末尾有水槽(),以便取消水槽。
答案 2 :(得分:12)
另一种方式
writeLines(unlist(lapply(mylist, paste, collapse=" ")))
答案 3 :(得分:8)
这是使用接收器的另一种方式:
sink(sink_dir_and_file_name); print(yourList); sink()
答案 4 :(得分:3)
取决于您的口味,替代尼科的答案:
d<-lapply(mylist, write, file=" ... ", append=T);
答案 5 :(得分:1)
这是另一个
cat(sapply(mylist, toString), file, sep="\n")
答案 6 :(得分:0)
我通过混合上述解决方案来解决这个问题。
sink("/Users/my/myTest.dat")
writeLines(unlist(lapply(k, paste, collapse=" ")))
sink()
我认为它运作良好
答案 7 :(得分:0)
格式不会完全相同,但是它确实将数据写入文本文件,并且当您想再次将其作为列表检索时,R将能够使用dget
重新读取它。
dput(mylist, "mylist.txt")