組み込み関数のように関数内の環境名を表示する方法は?たとえば、function: mean available in base パッケージを入力すると、環境が "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 環境に違いはありますか
この動作の背後にある動機へのポインタは高く評価されます。
ありがとうございました