【发布时间】:2018-04-04 00:31:01
【问题描述】:
我觉得这样做应该相当简单,但我终其一生都找不到解决方案……我想在与它所在的环境不同的环境中评估 R 函数。
我想要什么:
# A simple function
f <- function() {
x + 1
}
# Create an env and assign x <- 3
env <- new.env()
assign("x", 3, envir = env)
# Call f on env
call_on_env(f, env)
#> 4
我最接近“call_on_env()”的是:
# Quote call and evaluate
quo <- quote(f())
eval(quo, envir = env)
不幸的是,上面的代码返回了一个错误:Error in f() : object 'x' not found。那么……有没有办法让我在env 上评估f()?
编辑:我可以将f() 发送到env 然后调用它,但这会将f() 永久留在那里。对于上下文 [见下文],我想与一些预加载的包并行调用该函数。
上下文:我正在与parallel::clusterMap() 并行调用一个函数,并且我希望在我的全局环境中加载的包也能够加载到集群上。据我所知,parallel::clusterExport() 只能导出变量列表,所以对我不起作用...
【问题讨论】:
标签: r parallel-processing eval environment rlang