我正在尝试在列表中存储多个数据帧。但是,在某些时候,数据帧最终会转换为列表,因此我最终会得到一个列表列表。
我真正想做的就是将我的所有数据帧保持在某种结构中。
这是失败的代码:
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])
,我会收到'list',而如果我打电话给class(dframe)
,我会收到'data.frame'!
答案 0 :(得分:4)
当然,all_dframes[1]
的班级是list
,因为all_dframes
是一个列表。函数[
返回列表的子集。在此示例中,返回列表的长度为1。如果要提取数据框,则必须使用[[
,即all_dframes[[1]]
。
答案 1 :(得分: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])
}
这是你需要的吗?