2014-11-04 80 views
2

我試圖在列表中存儲多個數據幀。然而,在某些時候,數據框最終會被轉換成列表,所以我最終列出了一個列表。將數據幀組合到列表中

我真的很想做的事情就是把所有的數據幀都保存在某種結構中。

下面是失敗的代碼:

all_dframes <- list() # initialise a list that will hold a dataframe as each item 
for(file in filelist){ # load each file 
    dframe <- read.csv(file) # read CSV file 
    all_dframes[length(all_dframes)+1] <- dframe # add to the list 
} 

如果我現在打電話,例如,class(all_dframes[1]),我得到的名單「,而如果我叫class(dframe)我得到「data.frame」!

+5

你可以完成'files < - list.files(pattern =「。csv」); lapply(files,function(x)read.csv(x,header = TRUE))' – akrun 2014-11-04 08:56:19

+1

或'library(data.table);文件< - lapply(list.files(pattern =「。csv」),fread)' – zx8754 2014-11-04 09:14:59

回答

4

當然,all_dframes[1]的等級是list,因爲all_dframes是一個列表。功能[返回列表的一個子集。在這個例子中,返回列表的長度是1。如果你想提取數據幀,你必須使用[[,即all_dframes[[1]]

+0

Agk! R的'[]'/'[[]]'區別。討厭它。謝謝Sven。 – Mars 2015-04-16 20:14:34

1

我建議這樣的:

library(data.table) 
all_dframes <- vector("list",length(filelist)) 
for(i in 1:length(filelist)){ # load each file 
     all_dframes[[i]]<-fread(filelist[i]) 
} 

這是你需要什麼?