問題タブ [non-standard-evaluation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - Rのエスケープハッチとは何ですか?
Advanced Rという本を読んでいて、非標準評価の章で繰り返し言及されている「エスケープ ハッチ」の概念と混同していました。たとえば、著者が最初にこの単語に言及したとき、次の定義があります。
開発者は、常にエスケープ ハッチを提供する必要があります。これは、標準評価を使用する関数の代替バージョンです。
また、脱出ハッチに関するいくつかの例もあります。例の 1 つはCalling from another functionの部分からのものです。著者は次のように述べています。
通常、言語での計算は、関数がユーザーによって直接呼び出される場合に最も有用であり、他の関数によって呼び出される場合にはあまり有用ではありません。
以下の例のコードを参照してください。
しかし、うまくいきません:
著者は、この場合、すでに引用された式を取るサブセット 2() のバージョンを書くことができると言いました。コードを以下に示します。
その後、うまく動作します:
著者は例を挙げていますが、まだエスケープハッチを理解していません。それで、誰かがこの本またはRプログラミング言語でその定義を説明できますか? 私のセッション情報:
r - R 非標準評価: 変数の名前をパラメーターとして関数に渡し、関数に値を割り当てさせる
これはどこかで答えられていると確信していますが、見つけることができませんでした。dplyr を使用したプログラミングでも答えは得られません。
変数の名前をパラメーターとして関数に渡し、関数に値を割り当てる必要があります。
使用事例:
odbc::dbConnect へのラッパーを作成し、接続が既に有効かどうかを確認し、必要に応じて接続をリサイクルしたいと考えています。クエリがハングアップした場合、接続を適切に機能させるために、切断してから再接続する必要がある場合があります。
r - 引用符なしで関数の本体を変更する
ユーザーからの入力に応じて、関数の本体を変更する必要があります。
問題は、変更された関数に引用符が含まれていることです。どうすればそれらを取り除くことができますか?
ユーザー入力を式として評価すると、置換が機能し、引用符が挿入されません
ただし、<-または右側のみを使用する必要があります。そのような場合、数式が評価され、エラーが発生します。
私はまだ引用符を与えるnoquoteも試しました:
最後に、expr(!!userinput) 、 subs ()、およびreplacement のさまざまな組み合わせを試しました。