我的最終目標是能夠有一個函數:如何將``...``傳遞給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對象中包含的調用」可能滿足要求。 –