2014-09-26 67 views
2

如果我有包含多個數據框的列表元素,並且我想將它們作爲單個文本文件在名稱爲NP1,NP2,NP3的磁盤上寫入,那我該怎麼做?如何從R中的列表創建自動文本文件?

我用下面,

lapply(lst1,write.table) 

但這並不解決問題。我該怎麼做? 謝謝!

回答

2

這裏有兩種方法。一用一for環和一個與mapply

設置數據幀的列表:

lst1 <- list(data.frame(x = 1:5, y = letters[1:5]), 
      data.frame(z = 6:10, w = LETTERS[1:5])) 

遍歷列表與for循環:

for(i in seq_along(lst1)) { 
    write.table(lst1[[i]], paste0("NP", i, ".txt")) 
} 

檢查結果:

read.table("NP1.txt") 
read.table("NP2.txt") 

使用mapply

nm <- paste0("NP", seq_along(lst1), ".txt") ## create the file names 
mapply(write.table, lst1, file = nm)   ## write the files 
# [[1]] 
# NULL 
# 
# [[2]] 
# NULL 

請注意,如果你不希望NULL值而來的打印結果,您可以在invisible

invisible(mapply(write.table, lst1, file = nm)) 
+0

包裹呼叫我還有一個疑問。我正在做一個分析。所以,當我執行這個命令時,大量的文件被創建(> 200)。現在,列表中的每個數據框都有一些行數。有什麼方法可以從列表中刪除那些<3行的數據框,然後照常執行此命令? – sarah 2014-09-26 21:04:53

+0

是的,嘗試使用'dfList [!sapply(dfList,nrow)<3]'創建一個新列表'然後運行代碼 – 2014-09-26 21:07:02

+0

完美工作。謝謝。 :) – sarah 2014-09-26 21:13:29

相關問題