何时/如何/在哪里解释默认参数中的parent.frame?

时间:2013-03-19 16:22:46

标签: r environment

说实话,我只是在这里懒惰,但也许有一天会有人从这里的答案中获利。

假设我定义了一个函数:

fn<-function(envir=parent.frame())
{
    #do something with envir
}

我的问题是:我期望什么是envir的内容?

上下文:我有一个相当长的函数f1,它包含对parent.frame的调用。现在,我想将该函数的一部分(包含parent.frame调用)提取到一个新的辅助函数f2(然后由f1调用),并且我想确保f1与之前的相同。

1 个答案:

答案 0 :(得分:3)

默认参数的评估为within the evaluation frame of the function call,其中parent.frame()是调用环境。因此,envir的值将指向调用fn的环境。

另外,试试看吧:

debug(fn)
fn()
# debugging in: fn()
# debug at #2: {
# }
Browse[2]> envir
# <environment: R_GlobalEnv>