問題タブ [tidyeval]
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 - dplyr ラグ呼び出しでの予期しない tidy eval の動作
データフレームといくつかの変数を受け取る関数があり、整然とした評価原則を使用して一連の遅延変数を生成したいと考えています。単純な形式では、次のようになります。
ただし、これによりNA
すべてのラグ変数の値が生成されます。
その理由はありますか !! エバリュエーターはlag
通話内で作業していませんか? 彼らは明らかにselect
電話で働いています。
上記の呼び出しの予想される動作は、実際には次のコードのように機能するはずです (これは機能します)。
そして、予想どおり、次のものが生成されます。
r - purrr を使用して quosures のリストを作成する
purrr を使用して quosures のリストを返すことは可能ですか?
評価された quosures (つまり、3 から 5 を含むリスト) を返します。
quo(1 + 2)、quo (2 + 2) などを含むリストを返す方法はありますか?
(重要な場合、またはこれが将来訪問される場合のパッケージ バージョン: purrr 0.2.5、rlang 0.2.1)。
r - dplyr() の非標準評価と準引用符が (単純に) 期待どおりに機能しない
"derived_name"
以下の再現可能な例では、データベースを検索し、元の検索から派生した名前で出力にラベルを付けようとしています。dplyr
pipeを使用してい%>%
ますが、quasiquotation および/または非標準評価に問題があります。具体的には、最終関数でcount_colname
から派生した文字オブジェクトであるを使用すると、データフレームのサブセット化に失敗します。"derived_name"
top_n()
この議論に基づいて、上記のコードが機能すると思いました。そして、この投稿は私を試してみるように導きましたがtop_n_()
、これは存在しないようです。
私はvignette("programming")
頭を少し超えていることを勉強しています。この投稿により、機能する構文を試すようになりました!! sym()
が、理由がわかりません! 以下のコードが機能する理由を理解するのに役立ちます。ありがとう。
以下の@lionelと@Tungの質問とコメントに基づく追加の紛らわしい例。ここで私を混乱させているのは、ヘルプファイルがsym()
「文字列を入力として受け取り、それらをシンボルに変換する」および!!
「その引数の引用符を外す」と言っていることです。ただし、以下の例では、 はsym(count_colname)
引用符を外しているように見えますderived_name_letr_count
。と が同じ値を与えるため、 で!!
が必要な理由がわかりません。!! sym(count_colname)
sym(count_colname)
qq_show(!! sym(count_colname))