gpt4 book ai didi

r - 哪个函数可以标识R变量的封闭环境的名称?

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

我一直在阅读有关R环境的信息,并且尝试通过一个简单的示例测试我的理解:

> f <- function() {
+ x <- 1
+ environment(x)
+ }
>
> f()
NULL

我假设这意味着对象x被名为NULL的环境包围,但是当我尝试列出该环境中的所有对象时,R显示一条错误消息:
> ls(NULL)
Error in as.environment(pos) : using 'as.environment(NULL)' is defunct

所以我想知道是否可以在命令行上使用内置函数,该函数将根据给定的对象名称返回环境名称。我尝试了这个:
> environment(x)
Error in environment(x) : object 'x' not found

但这也返回了一个错误。任何帮助将不胜感激。

最佳答案

当函数完成执行时,在函数调用中创建的变量将被销毁(除非您在其他持久性环境中专门创建了它们)。正如@joran指出的那样,当调用函数时,会在其中定义局部变量的地方创建一个临时环境,并在函数执行完毕(释放内存)后将其销毁。但是,正如@MrFlick所指出的那样,如果函数返回一个函数,则返回的函数将保留对其在其中创建的环境的引用。您可以阅读有关'scope','stack', and 'heap'的更多信息。在R中,可以通过多种方式将变量定义到指定的环境中。

f <- function()  {
x <<- 1 # create x in the global environment (or change it if it's there)
## or `assign` x to a value
## assign(x, value=1, envir=.GlobalEnv)
}
environment(f) # where was f defined?
exists("x", envir=.GlobalEnv)
# [1] TRUE

关于r - 哪个函数可以标识R变量的封闭环境的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855515/

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