如果有人能用一个简单的例子说明这一点会有所帮助吗?
此外,在哪里使用parent.frame()而不是parent.env()反之亦然.
[这个问题已在Spacedman的聊天室中得到解决,但我将在未来将其发布给其他人使用.]
我有一个函数,myFunc它localFunc在其中创建.(注意:这不是在一个软件包中,而是在全局环境中.)我想知道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()输出). …