R eval():引数 'envir'が明示的にデフォルト値に設定されている場合の動作が変更されました

フロリアン

関数を考えてみましょうfun1()それを呼び出すことはありません値を代入2するxxの中で.GlobalEnv

fun1 <- function(x) eval(expr=substitute(x)) 
fun1({xx <- 2; xx})
## [1] 2
xx
## Error: object 'xx' not found

引数のデフォルト値envireval()次のとおりです。

formals(eval)$envir
## parent.frame()

ではfun2()引数envir明示的にデフォルト値に設定されていますparent.frame()呼び出しfun2() 値を代入2するxxの中で.GlobalEnv

fun2 <- function(x) eval(expr=substitute(x), envir=parent.frame())
fun2({xx <- 2; xx})
## [1] 2
xx
## [1] 2

(Rバージョン3.5.0でテスト済み)

何故ですか?その動作は意図されていますか?

user2554330

関数のデフォルトは、関数の評価フレームで評価されます。明示的な引数は、呼び出しフレームで評価されます。(これらは両方とも非標準の評価トリックによって変更できますが、使用していません。)

したがって、最初の例でparent.frame()は、はへの呼び出しの親eval()、つまりの評価フレームですfun1()2番目の例でparent.frame()は、はへの呼び出しの親ですfun2()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

R evalには、envir引数がlistまたはpairlistである場合の誤解を招くドキュメントがあります

分類Dev

R:関数内でdplyrを使用します。eval(expr、envir、enclos)の例外:不明な列

分類Dev

eval(predvars、data、env)のエラー:タイプ 'closure'の無効な 'envir'引数

分類Dev

R eval has misleading documentation for the case that the envir argument is list or pairlist

分類Dev

Rの線形モデルを使用したpurrr:タイプ '文字'の無効な 'envir'引数

分類Dev

Rシャイニーのタイプ「クロージャ」の無効な「envir」引数

分類Dev

Rの関数呼び出しでデフォルトの引数が使用されているか、変更されているかをテストします

分類Dev

変数がRデータフレームに存在するかどうかを確認します。変数が値を保持している場合、NAに設定されていない場合

分類Dev

knit_childでenvir引数を使用する方法は?

分類Dev

R.ディレクトリ内の多くのデータフレームのリストに対してlm関数を実行します。エラー:タイプ '文字'の 'envir'引数が無効です

分類Dev

TFSビルド変数が設定されていない場合、どのようにデフォルト値にフォールバックしますか?

分類Dev

bashスクリプトの最初の引数以外に引数が設定されていない場合は、デフォルト値を使用します

分類Dev

明示的にデフォルト設定された関数宣言が削除された場合の警告

分類Dev

変数が別のファイルで定義されている場合に、固定幅ファイルをRにインポートする

分類Dev

getoptでcmd引数が設定されていない場合のデフォルト値の設定方法

分類Dev

関数がK&Rスタイルで定義されている場合の引数型変換

分類Dev

R-ネストされた関数呼び出しのデフォルト引数を変更します

分類Dev

関数が2つの引数を取り、1つだけが指定されている場合のデフォルトの引数を設定します-Javascript

分類Dev

最初の引数がNULLの場合、R関数の最小戻りクラスがposixctからnumericに変更されました

分類Dev

Bashで、変数が設定されていない場合は、変数にデフォルト値を割り当てます

分類Dev

Jinja2変数が定義されている場合、変数を参照するAnsibleのデフォルトから変数を設定します

分類Dev

R-データフレームを順番に並べ、変数が同じままの場合は値を繰り返し、変更されたときに変更します

分類Dev

コマンドライン(optparse)Rから引数を渡すことについて混乱し、明示的な「デフォルト」オプションを使用しても引数が保存されない

分類Dev

関数の引数が指定されていないが、ベクトルのサブセット化に使用されている場合、Rはエラーを報告しません

分類Dev

Rでdplyrを使用してフィルター処理する場合、フィルター処理された変数のレベルがフィルター処理されたデータに残るのはなぜですか?

分類Dev

R-ベクトル内の文字列が複数の列のいずれかに表示される場合はブール値を返します

分類Dev

設定されている場合は環境変数を使用し、そうでない場合はmakefileのデフォルト値を使用します

分類Dev

Rでデータをセグメント化して、変数の1つが特定の値に設定されているポイントのみを含めるにはどうすればよいですか?

分類Dev

Rで混合効果モデルを設定する場合、モデルはループで指定されたすべての変数にどのように適用されますか?

Related 関連記事

  1. 1

    R evalには、envir引数がlistまたはpairlistである場合の誤解を招くドキュメントがあります

  2. 2

    R:関数内でdplyrを使用します。eval(expr、envir、enclos)の例外:不明な列

  3. 3

    eval(predvars、data、env)のエラー:タイプ 'closure'の無効な 'envir'引数

  4. 4

    R eval has misleading documentation for the case that the envir argument is list or pairlist

  5. 5

    Rの線形モデルを使用したpurrr:タイプ '文字'の無効な 'envir'引数

  6. 6

    Rシャイニーのタイプ「クロージャ」の無効な「envir」引数

  7. 7

    Rの関数呼び出しでデフォルトの引数が使用されているか、変更されているかをテストします

  8. 8

    変数がRデータフレームに存在するかどうかを確認します。変数が値を保持している場合、NAに設定されていない場合

  9. 9

    knit_childでenvir引数を使用する方法は?

  10. 10

    R.ディレクトリ内の多くのデータフレームのリストに対してlm関数を実行します。エラー:タイプ '文字'の 'envir'引数が無効です

  11. 11

    TFSビルド変数が設定されていない場合、どのようにデフォルト値にフォールバックしますか?

  12. 12

    bashスクリプトの最初の引数以外に引数が設定されていない場合は、デフォルト値を使用します

  13. 13

    明示的にデフォルト設定された関数宣言が削除された場合の警告

  14. 14

    変数が別のファイルで定義されている場合に、固定幅ファイルをRにインポートする

  15. 15

    getoptでcmd引数が設定されていない場合のデフォルト値の設定方法

  16. 16

    関数がK&Rスタイルで定義されている場合の引数型変換

  17. 17

    R-ネストされた関数呼び出しのデフォルト引数を変更します

  18. 18

    関数が2つの引数を取り、1つだけが指定されている場合のデフォルトの引数を設定します-Javascript

  19. 19

    最初の引数がNULLの場合、R関数の最小戻りクラスがposixctからnumericに変更されました

  20. 20

    Bashで、変数が設定されていない場合は、変数にデフォルト値を割り当てます

  21. 21

    Jinja2変数が定義されている場合、変数を参照するAnsibleのデフォルトから変数を設定します

  22. 22

    R-データフレームを順番に並べ、変数が同じままの場合は値を繰り返し、変更されたときに変更します

  23. 23

    コマンドライン(optparse)Rから引数を渡すことについて混乱し、明示的な「デフォルト」オプションを使用しても引数が保存されない

  24. 24

    関数の引数が指定されていないが、ベクトルのサブセット化に使用されている場合、Rはエラーを報告しません

  25. 25

    Rでdplyrを使用してフィルター処理する場合、フィルター処理された変数のレベルがフィルター処理されたデータに残るのはなぜですか?

  26. 26

    R-ベクトル内の文字列が複数の列のいずれかに表示される場合はブール値を返します

  27. 27

    設定されている場合は環境変数を使用し、そうでない場合はmakefileのデフォルト値を使用します

  28. 28

    Rでデータをセグメント化して、変数の1つが特定の値に設定されているポイントのみを含めるにはどうすればよいですか?

  29. 29

    Rで混合効果モデルを設定する場合、モデルはループで指定されたすべての変数にどのように適用されますか?

ホットタグ

アーカイブ