1

我正在尝试以沙盒方式运行已经存在的 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 based on commenter'sSuggestion)

4

0 回答 0