2016-09-28 74 views
1

我需要創建一個循環將幾個列表轉換爲數據框,然後將每個數據框寫爲csv。我的意思是,我想(i)運行一個循環來取消所有列表,並將它們轉換爲data.frames,並(ii)將每個列表寫入CSV。如何遍歷幾個列表以在R中創建數據框?

我跑了下面的腳本,它適用於我的列表之一,但我需要爲他們中的許多人做同樣的事情。

腳本轉換成數據幀嵌套列表(例如,列表1),並寫爲CSV

data <- as.data.frame(t(do.call(rbind,unlist(list1,recursive = FALSE)))) 
write.csv(data,"list1.csv")) 

請注意,「列表1」是我的名單,我寫了作爲一個例子之一。我創建了一個腳本(done <- ls(pattern="list")),以獲得一個名爲R所有列表名稱的矢量。因此,我應該將步驟(i)和(ii)應用於「完成」向量中的所有名稱。現在更清楚了嗎?

我真的很感激,如果你能幫我創建循環?

+0

你試過'data.frame(list1)'嗎?在R中,data.frame只是一堆一行一行垂直打印出來的列表。這個語法甚至可以在嵌套列表上工作,假設每個子列表都是您想要的data.frame的列。 – Vlo

+0

我已經知道如何從每個列表中檢索每個數據框(請參閱上面提供的腳本),但問題是我擁有一個列表的looooot,並且我想對所有列表運行相同的腳本。所以我需要一個循環。 – Juani

+0

類似的問題/答案[這裏](http://stackoverflow.com/questions/26707724/writing-multiple-data-frames-into-csv-files-using-r)。 – aosmith

回答

0
for(i in 1:nrow(done){ 
     list_name <- done[i] 
     data <- as.data.frame(t(do.call(rbind,unlist(noquote(list_name),recursive = FALSE)))) 
     write.csv(data,paste0(list_name,".csv")) 
} 
+0

我認爲它幾乎在那裏,但我得到了以下錯誤:錯誤在do.call(rbind,unlist(noquote(list_name),遞歸= FALSE)): 第二個參數必須是一個列表 – Juani

0
fun <- function(x){ 
    data <- as.data.frame(t(do.call(rbind,unlist(paste0("list",x),recursive = FALSE)))) 
    write.csv(data,paste0("list",x,".csv")) 
} 

fun(1:n) 

我相信這是最有效的方式。