R获取调用时函数创建的环境

时间:2017-09-18 10:22:44

标签: r scope

我希望在运行 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。

1 个答案:

答案 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