我試圖在一系列函數調用使用get
,但對象名稱查找似乎跳過環境。例如:[R環境和函數調用棧
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()
似乎不起作用。
這樣做,謝謝!爲什麼parent.frame()工作,但不是sys.parent()?是否有文檔討論所有這些不同功能的工作方式,以及通過編號或名稱提及環境的差異? – hgcrpd
@hgcrpd'sys.parent'返回一個整數,而不是框架/環境。 'parent.frame'使用'sys.parent'信息和'sys.frame'來獲取幀(不只是它的整數值)。 –