我试图通过将全局环境(包含函数和数据)保存到文件中,然后将其加载到新文件中,以沙盒方式运行已存在的 R代码块环境(不是全局环境)并评估该环境中的函数调用。但是,我在调用环境中的其他函数时遇到了麻烦。这是一个例子:
f1 <- function(x) x*2
f2 <- function(y) f1(y) + 1
save(list=ls(), file="env.RData")
rm(list=ls())
jobenv <- new.env(parent=globalenv())
load("env.RData", envir=jobenv)
expr <- quote(f2(3))
eval(expr, envir=jobenv)
失败了:
Error in f2(3) : could not find function "f1"
然后首先附加环境:
> attach(jobenv)
> eval(expr)
[1] 7
除了使用attach
之外,有没有办法在反序列化环境中成功评估嵌套函数调用?
(根据评论者的建议,这个问题来自R - Evaluate a nested function in an environment)