2010-06-15 60 views
37

我在R A名单如下: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 

我知道,我可以用水槽(),但它打印元素的名称[[X],[Y]我想避免它。另外,由于列表中每个元素的元素数量不同,因此不可能使用write()或write.table()。

回答

46

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

lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000) 
+4

测试。工作。你也可以使用简写:'lapply(mylist,write,“test2.txt”,append = TRUE)' – Marek 2010-06-15 12:23:45

+1

@Marek:好的!我不记得你可以像这样传递参数给lapply! – nico 2010-06-15 12:50:53

+4

只是一个重要的细节,你需要指定写函数的ncolumns参数,否则行将被修剪为仅5列: 'lapply(mylist,write,“test3.txt”,append = T,ncolumns = 1000)' – pms 2010-06-15 13:30:23

11

另一种方式

writeLines(unlist(lapply(mylist, paste, collapse=" "))) 
3

取决于你的口味,替代尼科的答案:

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

这是另一个

cat(sapply(mylist, toString), file, sep="\n") 
+0

谢谢。这对我有效。与其他解决方案,我收到一个错误“...不能由'猫'处理?我可以问你,如果我在列表中有两个数据帧,我想将主题导出到TXT,并保持表格结构?他们之间我想有一个空行 – Eco06 2016-07-05 10:56:46

5

下面是使用水槽另一种方式:

沉(sink_dir_and_file_name);打印(yourList);水槽()

14

我在Nico的回答中看到,有些人遇到了保存列表中存在列表的问题。我的一些工作也遇到了这个问题,希望有人找到比我发现的更好的答案,但是没有人回答他们的问题。我试图保留一个嵌套列表的唯一方法是使用sink(),如user6585653建议(我试图投票他的答案,但不能)。这不是最好的办法,因为你链接文本文件,这意味着它可以轻松地覆盖写入或其他结果可能会保存在该文件中,如果你不取消接收器。请参阅下面的代码。

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

确保在您的代码末尾有sink(),以便取消接收器。

+0

伟大的解决方案!其他人给我一个错误,这对我的嵌套列表完美的作品。 – agenis 2017-04-07 15:24:02

0

我通过混合上面的解决方案解决了这个问题。

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

我觉得它工作得很好