我试图将一个环境传递到一个函数中,但似乎无法使用带有‘’构造的来使用它。在以下守则中:
f <- function(i,env)with(env, i+2*j)
g <- function() {
env <- new.env()
env$j <- 3
f(10, env)
}
g()我本来希望在中使用‘’,我是可见的,所以g()应该返回16。
Error in eval(expr, envir, enclos) : object 'i' not found我注意到导演说
如果“数据”已经是一个环境,那么它将与其现有的父环境一起使用,
但这似乎是完全短路,所有的论点的一个函数。为什么这会是有用的行为呢?
(这方面的背景是,我正在清理一些具有较大全局变量的旧代码;我正在尝试将其填充到一个大的环境中,然后传递出去,我希望我不需要重写以前的全局变量的所有读/写)。
任何帮助都很感激。
发布于 2014-04-04 16:20:27
i是在f环境中,而不是在env环境中。你得去做
f <- function(i,env) with(env,j)*2+i
g <- function() {
env <- new.env()
env$j <- 3
f(10, env)
}
g()https://stackoverflow.com/questions/22866140
复制相似问题