[解決済み] R言語のparent.frame()とparent.env()の違い、参照呼び出しの違いは何ですか?
2023-05-08 14:32:44
質問
どなたか、簡単な例で説明していただけると助かります。
また、どこで
parent.frame()
の代わりに
parent.env()
となり、その逆もしかりです。
どのように解決するのですか?
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の比較的新しい参照クラスの実装は、これらのアイデアに依存して、シンボル(インスタンスフィールドとメソッド)を見つけることができるインスタンス固有の環境を定義しています。
関連
-
[解決済み] ggplot 2.0.0でのポイントサイズ
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】ベースポインタとスタックポインタとは一体何でしょうか?これらは何を指しているのでしょうか?
-
[解決済み] セッションが作成されません。このバージョンのChromeDriverはChromeバージョンにしか対応していません ChromeDriver ChromeでSeleniumを使用した場合の74エラー
-
[解決済み] Shiny:observeEventとeventReactiveの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R言語のエラーメッセージと関連する解決策
-
R言語エラー:図の余白が大きすぎる 解決方法
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] 文字列ベクトルを代入して、列名を持つ空のデータフレームを作成する?重複
-
[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?
-
[解決済み] R dataframeでNAの値をゼロに置き換えるには?
-
[解決済み] 空のdata.frameを作成する
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み] [Solved] data.frameのカラムをベクトルに変換する?
-
[解決済み] データフレームのカラムのデータ型を決定する