我的最终目标是能够有一个函数:如何将``...``传递给R中的新环境?
- 上的功能进行操作,并返回一个函数
- 返回函数创建一个.GlobalEnv一个新的环境,其母公司和,
- 评估新环境中的参数函数。
它的工作是这样的:
# Create an object that doesn't exist in the new.env
iris2 <- iris
model <- in_new_env(lm)(Sepal.Length ~ Sepal.Width, iris2)
我想这样做的原因是,我经常在这里我想生成一个函数内部模型/ ggplot应用程序中含有大量的项目,不会直接用在model/ggplot调用中。由于这些对象包含在其调用环境中,因此保存时对象会非常大,或从并行群集中移回。
我开始尝试是:
in_new_env <- function(.f){
function(...) {
env <- new.env(parent = globalenv())
# This doesn't seem to actually export the ... to env
assign("...", ..., envir = env)
env$.f <- .f
with(env, .f(...))
# Error in eval(expr, envir, enclos) : '...' used in an incorrect context
}
}
,如果我能够导出...
到env
这会工作。我该怎么做呢?可能吗?你对in_new_env
的替代策略有何建议?
这对于Bill Dunlap here提出的解决方案来说是一个方便的包装。
你可能想看看最近发布的'ggghost'包,它似乎将其任务设置为像这样做(至少据我了解)ggplot2函数链。 (我没有经验。)特别想到'summary.ggghost',描述为“列出ggghost对象中包含的调用”可能满足要求。 –