一連の関数呼び出しで使用しようとして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()
がうまくいかないようです。