R:从包含多个文件的文件夹中加载数据

时间:2015-05-30 10:05:14

标签: r

我有一个包含多个要加载的文件的文件夹:

enter image description here

每个文件都是一个列表。我希望将所有列表中的列表组合在一起。我使用以下代码(每次从文件中加载的变量称为TotalData):

Filenames <- paste0('DATA3_',as.character(1:18))
Data <- list()
for (ii in Filenames){
      load(ii)
      Data <- append(Data,TotalData)
}

有没有更优雅的方式来写它?例如,使用apply函数?

1 个答案:

答案 0 :(得分:1)

您可以使用lapply。我假设您的文件已使用save存储,因为您使用load来获取它们。我在我的示例中创建了两个文件,如下所示:

TotalData<-list(1:10)
save(TotalData,file="DATA3_1")
TotalData<-list(11:20)
save(TotalData,file="DATA3_2")

然后我通过

阅读它们
Filenames <- paste0('DATA3_',as.character(1:2))
Data <- lapply(Filenames,function(fn) {
   load(fn)
   return (TotalData)
})

在此之后,Data将是一个列表,其中包含文件中的列表作为其元素。由于您在示例中使用了append,我认为这不是您想要的。我用

删除了一级嵌套
Data <- unlist(Data,recursive=FALSE)

对于我的两个示例文件,这给出了与代码相同的结果。是否更优雅可以辩论,但我会声称它比for-loop更R-ish。