【发布时间】:2017-02-06 00:45:18
【问题描述】:
假设我有以下功能:
g = function(x) x+h
现在,如果我的环境中有一个名为 h 的对象,我不会有任何问题:
h = 4
g(2)
## should be 6
现在,我有另一个功能:
f = function() {
h = 3
g(2)
}
我希望:
rm(h)
f()
## should be 5, isn't it?
相反,我得到一个错误
## Error in g(2) : object 'h' not found
我希望 g 在 f 的环境中进行评估,因此 f 中的 h 将绑定到 g 中的 h,就像我在.GlobalEnv。这不会发生(显然)。任何解释为什么?如何克服这个问题,以便使用封闭环境评估函数内的函数(例如g)?
【问题讨论】:
-
我没有答案,但似乎 R 会在全局范围内查找所有未在函数调用中定义或作为参数传递的变量。
标签: r function binding environment