[解決済み] dplyr::filterで変数名として文字列を渡す
2023-01-02 15:41:55
質問
mtcarsデータセットを使って質問しています。
例えば、4気筒の車にサブセットしたいのですが、可能でしょうか?
mtcars %>% filter(cyl == 4)
私の仕事では、カラム名として文字列変数を渡す必要があります。例えば
var <- 'cyl'
mtcars %>% filter(var == 4)
もしました。
mtcars %>% filter(!!var == 4)
どちらの場合も、空のデータフレームが表示されました。
どのように解決するのですか?
!!
または
UQ
は変数を評価するので
mtcars %>% filter(!!var == 4)
と同じです。
mtcars %>% filter('cyl' == 4)
と同じで、条件は常に false と評価されます。
!!var
を表示することで証明できます。
mtcars %>% filter({ print(!!var); (!!var) == 4 })
# [1] "cyl"
# [1] mpg cyl disp hp drat wt qsec vs am gear carb
# <0 rows> (or 0-length row.names)
を評価するために
var
を
cyl
カラムに変換する必要があります。
var
のシンボルに変換する必要があります。
cyl
を評価し、次にシンボル
cyl
をカラムに評価します。
使用方法
rlang
:
library(rlang)
var <- 'cyl'
mtcars %>% filter((!!sym(var)) == 4)
# mpg cyl disp hp drat wt qsec vs am gear carb
#1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#3 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
# ...
あるいは
as.symbol/as.name
をbaseRから取得します。
mtcars %>% filter((!!as.symbol(var)) == 4)
mtcars %>% filter((!!as.name(var)) == 4)
関連
-
R言語 - マトリックス
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] Rの二乗偏差の総和の算出
-
[解決済み] Rでデータフレームに行を追加する方法は?
-
[解決済み] 非常に大きなテーブルをデータフレームとして高速に読み込む
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】ifelse()でDateオブジェクトがnumericオブジェクトにならないようにする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R read.table Error:埋め込まれたヌルが含まれているようです。
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法