【问题标题】:Loading multiple workspaces into R at once一次将多个工作区加载到 R 中
【发布时间】:2016-10-08 20:03:41
【问题描述】:

考虑在您的目录中有许多 *.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"

...等等。

【问题讨论】:

  • 加载。改名。泡沫。冲洗。重复。
  • 这就是我现在正在做的事情:>
  • 'load' 的默认设置是覆盖命名项目,因此要么编写一个防止这种情况发生的函数,要么使用 rds 存储。

标签: r


【解决方案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 个不同的对象。请注意,这不是最佳选择——我想使用 lapply 而不是循环,但是每次读取新文件时我都无法弄清楚如何迭代后缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2018-06-28
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多