如何将R环境对象内容解包至当前工作环境(替代.RData读写)
用环境替代RData实现变量的保存与加载效果
要实现和save()/load()类似的变量导入效果但不写入文件,直接用list2env()函数就能搞定,它可以把自定义环境中的所有变量导入当前工作环境,并且自动覆盖同名变量。
初始场景代码
# 当前工作环境的初始变量 a <- 'foo' b <- 'bar' # 自定义环境,存储需要"加载"的目标变量 env <- new.env() env$a <- 1 env$c <- 3
实现变量导入的核心代码
# 将env中的变量全部导入当前全局环境,覆盖同名变量 list2env(as.list(env), envir = .GlobalEnv)
验证结果
执行后查看变量值:
a # 输出:1(原变量被覆盖) b # 输出:'bar'(无同名变量,保持原样) c # 输出:3(新增变量)
原理说明
as.list(env)把自定义环境转换成键值对列表,键是变量名,值是变量内容list2env()负责把列表中的键值对转换成变量,导入到指定的envir环境中,默认允许覆盖已有变量,完美匹配load()的行为
内容的提问来源于stack exchange,提问作者goweon
相关产品推荐
相关产品推荐

