【发布时间】:2022-03-02 19:31:16
【问题描述】:
我想将一个函数的值提供给我在第一个函数内部调用的另一个函数,但我似乎无法正确确定范围。至关重要的是,这两个函数是分开定义的。这是一个例子:
little_fun <- function(){
print(paste("CheckNumber exists in parent frame =", exists("CheckNumber", where = parent.frame())))
print(paste("CheckNumber exists in current frame =", exists("CheckNumber")))
if(exists("CheckNumber", where = parent.frame())){
print(CheckNumber + 2)
}
}
单独运行little_fun() 会返回
[1] "CheckNumber exists in parent frame = FALSE"
[1] "CheckNumber exists in current frame = FALSE"
这是我所期望的。但是,我想做一个更复杂的函数,在内部调用 little_fun。
big_fun <- function(y){
CheckNumber <- 5
little_fun()
}
调用 big_fun 会返回:
[1] "CheckNumber exists in parent frame = TRUE"
[1] "CheckNumber exists in current frame = FALSE"
Error in print(CheckNumber + 2) : object 'CheckNumber' not found
对我来说,CheckNumber 存在于父框架中但不存在于当前框架中是有意义的。但是CheckNumber如何存在于父框架中但不能用于添加到2?我认为 R 会继续爬升环境树,直到找到所需的变量。这是怎么回事?
【问题讨论】: