誰かが簡単な例でこれを説明できると便利でしょうか?Rのparent.frame()とparent.env()の違いは何ですか?彼らは参照によってどのように相違しますか?
また、parent.env()
の代わりにparent.frame()
を使用すると便利な場合は、その逆もあります。
誰かが簡単な例でこれを説明できると便利でしょうか?Rのparent.frame()とparent.env()の違いは何ですか?彼らは参照によってどのように相違しますか?
また、parent.env()
の代わりにparent.frame()
を使用すると便利な場合は、その逆もあります。
parent.env
は、クロージャ(関数など)が定義されている環境です。 parent.frame
は、クロージャが呼び出された環境です。
f = function()
c(f=environment(), defined_in=parent.env(environment()),
called_from=parent.frame())
g = function()
c(g=environment(), f())
、その後
> g()
$g
<environment: 0x14060e8>
$f
<environment: 0x1405f28>
$defined_in
<environment: R_GlobalEnv>
$called_from
<environment: 0x14060e8>
私はただの死を免れがこれまで実際にそれらを使用したい時にわからないんだけど、概念は、ここで
> f = function() x
> g = function() { x = 2; f() }
> h = function() { x = 3; function() x }
> x = 1
> f()
[1] 1
> g()
[1] 1
> h()()
[1] 3
レキシカルスコープを理解する上で役立ちますまたはRの導入の謎めいた「銀行口座」の例で説明しています。?parent.frame
の詳細セクションの最初の段落は、事柄を明確にするかもしれません。
環境はRで広く使用されています。たとえば、search()
パスは、兄弟 - >親関係でチェーンされた(大体の)環境です。シンボルのルックアップを回避するためにenv = new.env(parent=emptyenv())
が表示されることがあります。通常はenv[["x"]]
はenv
、次に見つからない場合はenv
になります。同様に、<<-
はparent.env
で始まる割り当てを探します。 Rの比較的新しい参照クラスの実装は、これらの考え方に基づいてシンボル(インスタンスフィールドとメソッド)が見つかるインスタンス固有の環境を定義します。