gpt4 book ai didi

R环境和函数调用栈

转载 作者:行者123 更新时间:2023-12-04 09:36:36 25 4
gpt4 key购买 nike

我正在尝试在一系列函数调用中使用get,但是对象名称的查找似乎跳过了环境。例如:

foo <- 1 # variable in .GlobalEnv

getter <- function(x) {get(x)}
getter("foo") # returns 1, which is expected

f1 <- function() {
foo <- 2 # local variable in the function scope
getter("foo")
}

f1() # still returns 1, would've expected to return 2

为什么调用 f1在全局环境中返回 foo而不在调用函数的环境中返回 foo

如何在调用函数的环境中显示 get?设置 pos = sys.parent()似乎无效。

最佳答案

如果您定义getter以在父框架中查找,则它可以工作:

getter <- function(x) get(x, envir=parent.frame())

然后:
getter("foo")
[1] 1

f1()
[1] 2

关于R环境和函数调用栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12492226/

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