我希望在运行 WITHOUT 修改函数源时(即从函数外部)获取函数创建的环境,是否可能?
fn=function()
{#Here a new environment is created at each call, how to get it ?
#This environment can be access with environment() but only (to what I know)
#from inside the function
...
}
我想要这样的事情:
env=some_function(fn())
其中env是fn在调用时创建的环境ID。
答案 0 :(得分:3)
您可以跟踪函数以将调用环境绑定到全局环境中的符号:
fn <- function() {x <- 2; 1}
trace(fn, quote(efn <<- environment()), at = 1)
fn()
#Tracing fn() step 1
#[1] 1
untrace(fn)
efn$x
#[1] 2