【发布时间】:2012-09-05 10:09:42
【问题描述】:
我有一个关于 R 语言中的函数环境的问题。 我知道每次在 R 中调用一个函数,一个新的环境 E 被创建在其中执行函数体。的父链接 E 指向创建函数的环境。
我的问题:是否有可能以某种方式指定环境 E,即可以一个 提供一个特定的环境来执行函数?
【问题讨论】:
-
environment(fun) <- value有什么问题,如?environment中所述? -
您可以在全局环境之外的环境中评估函数调用,但这仍会在函数内生成一个新环境,但现在该环境的父级将是您在不是全球环境中评估它的环境。会这样吗?如果是这样,请参阅
?with和?eval,后者是with()使用的较低级别的函数。 -
那么你能不能改变这个函数,以便设置你想要的调用并在指定的环境中评估它。然后你会在指定的环境中有 GlobalEnv > fun execution env > eval 调用。我不认为你可以在调用函数时停止 R 创建一个新环境,但是你可以修改函数体以在指定的环境中完成它的工作,而不是创建的那个 R(它仍然存在并且当然会被创建,在那之后你只是在改变环境。)
-
您需要更具体地了解您想要更改的执行功能的环境。添加某个对象?更改环境变量?
-
@amonk(赏金赞助商):还请描述您期望的限制,例如。 g.:是否允许更改受影响函数的函数体,是否允许包装函数,是否允许修改执行函数的每个代码点,是否还想修改来自包的函数...
标签: r function call environment