問題タブ [nse]

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.

0 投票する
1 に答える
121 参照

r - R は関数を標準評価と非標準評価の両方に対してロバストにする

columnに依存するデータフレームのユーザー定義を検索する小さな関数がありますdplyr。以下の現在の形式では、非標準評価で列引数を受け入れます-引用符なしで(たとえば、標準評価scenarioの代わりに"scenario")。

ユーザーが列名をどのように入力しても、つまり標準または非標準の評価で関数を機能させる方法はありますか?

0 投票する
3 に答える
4178 参照

r - Rの関数内でdplyr/magrittrのパイプを使用するにはどうすればよいですか?

データフレームと関数の名前を引数として取る関数を作成しようとしています。標準の R 構文で関数を記述しようとすると、 http: //adv-r.had.co.nz/Computing-on-the-language.html で @hadley が推奨するように、evalandを使用して良い結果を得ることができます。substitute

ここで、演算子を使用して同じ関数を記述しようとすると、機能し%>%ません:

evalパイプ演算子とandを組み合わせて使用​​するにはどうすればよいsubstituteですか? 私には本当に難しいようです。

0 投票する
1 に答える
108 参照

r - dplyr の do() を使用した複雑な式の NSE

変数参照が".$mpg".

hereを読んだ後、変数名を与える文字列があるので、 as.name を使用するとそれができると思いました。

たとえば、これは機能します:

これは機能しません:

しかし、これは:

そしてこれもそうです:

.$mpg次の例のように、データにドットを指定するオプションがない場合に do() で使用できるように、フォームで変数を指定できるようにしたいと考えています。

  • prop.test 関数がどのように機能するかを示すためにここで確率変数を選択しましたが、これをテストの誤用と解釈しないでください。

最終的には、これを次のような関数に変換したいと考えています。

私はもともと次のようなことをしなければならないと思っていました: interp(~var, var = as.name(miles)wheremilesは に置き換えられますが.$mpg、上で述べたように、これはうまくいかないようです。

0 投票する
3 に答える
1842 参照

r - dplyr::filter に引数を渡して関数を作成する nse を回避する最善の方法は何ですか?

非標準評価は、dplyr の動詞を使用する場合に非常に便利です。しかし、関数の引数でこれらの動詞を使用すると問題が発生する可能性があります。たとえば、特定の種の行数を取得する関数を作成したいとします。

例が機能しない

species この関数は、関数の引数のコンテキストではなく、アイリス データ フレームのコンテキストで解釈されるため、期待どおりに動作しません。

3つの実装例

非標準の評価を回避するために、通常は引数にアンダースコアを追加します。

関数の引数の名前を使いにくい名前に変更するため、完全に満足できるものではありません。または、オートコンプリートに依存していますが、これはプログラミングの良い習慣ではありません。素敵な引数名を保持するには、次のようにします。

この回答に基づいて非標準評価を回避する別の方法。 関数環境のコンテキストでinterp()解釈します。species

上記の 3 つの関数を考慮して、このフィルター関数を実装するための推奨される (最も堅牢な) 方法は何ですか? 他の方法はありますか?

0 投票する
2 に答える
824 参照

r - 非標準評価、lapply、および ggplot

ggplot2 を使用してプログラムで分布をプロットしようとしています。

ここで非標準評価(NSE)を扱う方法がわかりません(NSEに関するHadleyの本の章などを読んだ後でも)。

次のコードを検討してください。

このコード、列ごとに 1 つずつ、多数の密度プロットを生成します。ただし、プロットされている変数の名前は出力されません。代わりに、プレースホルダー変数xが出力されます (図を参照)。

上記のコードから得られるプロット

私の目標は、x引用符を実際の変数名に置き換えることですmpg

0 投票する
1 に答える
75 参照

r - magrittr 逆パイプを使用した非標準評価構文の記述

コードを単純化する簡単な方法を検討しています。

このsqrt関数は、以下の列のサブセットに簡単に適用できます。

問題

サブセット シーケンス全体を再度入力する必要なく、サブセットに他の変換を適用することに関心があります。

たとえば、コード:

エラーが返されます:

を使用した構文と同じ.です。私の質問は次のとおりです。構文的には、関数と同じ効果を得るにはどうすればよいsqrtですが、渡されたサブセットに長い関数を適用できますか?

0 投票する
1 に答える
116 参照

r - dplyr mutate との評価順序の不一致

mutate 呼び出し内で使用する関数が 2 つあります。1 つは期待どおりに行ごとの結果を生成し、もう 1 つはすべての行に対して同じ値を繰り返します。

次のようなものを生成します。

つまり、d列は変化しますvが一定であり、その値は実際にはどの行のXおよびYの値にも対応しません。

これは NSE に関連していると思われますが、どのようにしてそれを知ることができたのかわかりません。

divとの異なる動作の原因は何pvですか? どうすれば修正できますpvか?