相关疑难解决方法(0)

R中的parent.frame()和parent.env()有什么区别; 他们如何通过引用来区分?

如果有人能用一个简单的例子说明这一点会有所帮助吗?

此外,在哪里使用parent.frame()而不是parent.env()反之亦然.

environment r function-call stack-frame

80
推荐指数
1
解决办法
3万
查看次数

如何在R中的函数中引用本地环境?

[这个问题已在Spacedman聊天室中得到解决,但我将在未来将其发布给其他人使用.]

我有一个函数,myFunclocalFunc在其中创建.(注意:这不是在一个软件包中,而是在全局环境中.)我想知道localFunc搜索路径中存在哪些内容,因为我想通过它来分析它mvbutils::foodweb.

这是一个例子:

myFunc <- function(){
    require(data.table)
    require(mvbutils)
    localFunc <- function(x){
        return(as.data.table(x))
    }

    vecPrune <- c("localFunc",ls("package:data.table"))
    ix <- match("data.table",search())
    tmpWeb <- foodweb(where = c(1,ix), prune = vecPrune, plotting = FALSE)
    return(tmpWeb)
}
Run Code Online (Sandbox Code Playgroud)

但是,调用myFunc()似乎并不表示localFunc调用data.table().这是不正确的 - 是什么给出的?

(注意:where参数指定搜索路径.)


更新1:正如Tommy和Spacedman指出的那样,诀窍是指定environment().电话foodweb()指的是where = c(1, ix).该指数1是一个错误.这是因为认为.GlobalEnv通常(总是?)search()向量中的第一项是搜索的正确位置.这是错误的.相反,应该参考environment(),正确的呼叫在下面.(NB:ix指定的位置data.table()中的search()输出). …

namespaces r

30
推荐指数
1
解决办法
2万
查看次数

标签 统计

r ×2

environment ×1

function-call ×1

namespaces ×1

stack-frame ×1