0
我试图将一个环境传递给一个函数,但似乎无法使用``with''构造来使用它。 在下面的代码:与(数据,表达式)构造函数内部呈现其参数不可见?
f <- function(i,env)with(env, i+2*j)
g <- function() {
env <- new.env()
env$j <- 3
f(10, env)
}
g()
我本来期望的是里面的``有',我会是可见的,所以克()应该返回16.不过,我得到
Error in eval(expr, envir, enclos) : object 'i' not found
我注意到实况说
如果“数据”已经是一个环境,那么,这是使用它的 现有父,
但这似乎完全短路一个函数的所有参数。 Wny是这个,为什么这是有用的行为?
(背景这是我在清理旧的代码,有一些较大的全局变量; 我想要的东西,成被传来传去一个大的环境,我的希望是, 我没不需要重写所有对以前全局变量的读/写操作)。
任何帮助表示赞赏。
嗯......但我会认为这个对象我会在封闭的环境中查找。你的解决方案可以工作,但是和编写env $ i没有什么不同,这需要通过在env $前加上前缀来重写每个访问以前的全局对象。我希望会有一个窍门...... – plijnzaad