2010-06-15 59 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() 

我覺得它工作得很好