我有一个包含多个要加载的文件的文件夹:
每个文件都是一个列表。我希望将所有列表中的列表组合在一起。我使用以下代码(每次从文件中加载的变量称为TotalData
):
Filenames <- paste0('DATA3_',as.character(1:18))
Data <- list()
for (ii in Filenames){
load(ii)
Data <- append(Data,TotalData)
}
有没有更优雅的方式来写它?例如,使用apply函数?
答案 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。