gpt4 book ai didi

R:函数——显示环境名称而不是该环境的内存地址?

转载 作者:行者123 更新时间:2023-12-02 01:21:24 24 4
gpt4 key购买 nike

如何像内置函数一样显示函数内部的环境名称?例如,当我输入 function:mean available in base package 时,我可以将环境视为“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 环境之间有区别

任何有关此行为背后动机的指示都将受到高度赞赏。

谢谢

最佳答案

您可以使用 attr 设置环境名称,如下所示:

e <- new.env()
attr(e, "name") <- "xyzzy"

environmentName(e)
## [1] "xyzzy"

关于R:函数——显示环境名称而不是该环境的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com