如何在函数内以类似于内置函数的方式显示环境名称?例如,当我键入基本包中可用的mean函数时,我可以看到环境为“namespace:base”。
mean
function (x, ...)
UseMethod("mean")
<bytecode: 0x0547f17c>
**<environment: namespace:base>**
然而,当我将一个函数附加到新创建的环境上时,在函数(f)内部访问自由变量(z)的值时,它会自动驻留在.GlobalEnv环境中,环境的名称不会显示在函数内部,但是(e1)环境的内存地址"0x051abd60"可以看到。
e1 <- new.env()
e1$z <- 10
f <- function(x) {
x + z
}
environment(f) = e1
f
function(x) {
x + z
}
**<environment: 0x051abd60>**
为什么我会看到这种行为?为什么我在函数内部无法像R内置函数和来自各种R包的函数那样获取我的环境名称?环境数据结构和由search()提供的.GlobalEnv环境之间有什么区别吗?
非常感谢任何关于此行为背后动机的指针。
谢谢。