問題タブ [rlang]

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 投票する
2 に答える
1656 参照

r - R dplyr は、文字列名だけで知られる列を操作します

dplyrR を使用して、文字列名でのみ認識されるデータ フレームの列を操作するプログラミングに取り組んでいます。最近、dplyrクォーシュアなどをサポートするための更新があったことを知っており、新しい「dplyr を使用したプログラミング」記事の関連コンポーネントと思われるものを確認しました: http://dplyr.tidyverse.org/articles/programming .html . しかし、私はまだやりたいことをすることができません。

私の状況は、データ フレームの列名をその文字列名だけで知っているということです。dplyrしたがって、関数内の呼び出しや、実行ごとに列名が変わる可能性のあるスクリプトでさえ、非標準評価を使用することはできません. これを回避する方法を知りたいのですが、新しい引用/引用解除構文で何かを見落としていると思います。

たとえば、データ分布のカットオフ パーセンタイルを定義するユーザー入力があるとします。ユーザーは任意のパーセンタイルを使用してコードを実行でき、選択したパーセンタイルによって出力が変わります。分析内で、中間データ フレームの列が、使用されるパーセンタイルの名前で作成されます。したがって、この列の名前は、ユーザーが入力したカットオフ パーセンタイルに応じて変わります。

以下は、説明するための最小限の例です。カットオフ パーセンタイルのさまざまな値で関数を呼び出したい。という名前のデータ フレームMPGCutoffsに、選択したカットオフ分位 (これは現在、以下のコードで機能します) に従って名前が付けられた列が必要であり、後でこの列名を操作したいと考えています。pctCutoffこの列名の一般性のため、関数を作成する時点では入力に関してしか知ることができないためprobColName、定義済みのパターン ベースに従うによって定義された文字列のみを知っている場合に、それを操作する方法が必要です。の値についてpctCutoff

ステートメントは、dplyr::filter()私が適切に実行することができないものです。私はもう試した:

dplyr::filter( mpg > probColName )- エラーはありませんが、行が返されませんでした。

dplyr::filter( mpg > !!probColName )- エラーはありませんが、行が返されませんでした。

関数に次のようなものを渡して、 ;quo(P95)の呼び出しで引用符を外すことができる例も見てきました。dplyr::filter()これで動作するようになりましたが、関数の外で変数名をハードコーディングする必要があるため、問題は解決しません。たとえば、これを行い、ユーザーから渡されたパーセンタイルが 0.90 の場合、作成された列の名前はではなくdplyr::filter()であるため、 への呼び出しは失敗します。P90P95

どんな助けでも大歓迎です。私が見落としている簡単な解決策があることを願っています。

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

r - rlang quosures と dplyr を介して引数の複数のリストを渡す

目的: 最初の引数としてデータ フレームを受け取り、次に 2 つの追加の引数 (引数のリスト) を受け取る dplyr::select関数を作成して、関数が 2 つのデータ フレームを返すようにします。

これが実際の例です

df1私は、引数とdf2を取ることを好むだろうlistないalist. ただし、my_select引数が次の場合、関数は失敗します。list

.の代わりalistに.alistlist

これを修正するため に、、 、rlang::UQrlang::UQE、の組み合わせをいくつか試しました。私が最良のアプローチだと思ったのは次のとおりです。rlang::UQSrlang::quorlang::enquosrlang::quos

rlang パッケージをdplyrで使用して、引数が 経由で渡された場合my_select2と同じオブジェクトをの構文が返すようにする方法はありますか?my_selectalist