一次将多个工作区加载到R中

时间:2016-06-08 13:49:34

标签: r

考虑在目录中包含许多* .Rda文件。它们都只包含一个对象(在本例中是一个从mboost ::: gamboost获得的模型),附加了扭曲,对象具有相同的名称(“mod_gam”)。

是否可以一次将所有这些加载到工作区中(甚至重命名)?

temp <- list.files(pattern="*.Rda")
models <- lapply(temp, load)

会产生一个包含空字符的列表:

str(models)
List of 26
 $ : chr "mod_gam"
 $ : chr "mod_gam"
 $ : chr "mod_gam"

......等等。

1 个答案:

答案 0 :(得分:1)

我的建议是在加载对象时为对象添加一个迭代后缀。因为你已经知道加载的每个对象都会被称为“mod_gam”,所以它会让事情变得容易一点。

i <- 1
for(each in temp){
    load(each)
    eval(parse(text=paste(paste0("mod_gam_",i),"<- mod_gam")))
    i <- i+1
}

这将为您提供26个不同的对象。请注意,这不是最佳的 - 我想要提供而不是循环,但是每次读入新文件时我都无法弄清楚如何迭代后缀。