dplyrの関数で変数名を使用する 質問する

dplyrの関数で変数名を使用する 質問する

の関数内で変数名を文字列として使用したいですdplyr。以下の例を参照してください。

df <- data.frame( 
      color = c("blue", "black", "blue", "blue", "black"), 
      value = 1:5)
filter(df, color == "blue")

color完璧に動作しますが、次のような文字列で参照したいと思います。

var <- "color"
filter(df, this_probably_should_be_a_function(var) == "blue").

どのような手段を使ってもこれを実現できれば嬉しいですし、読みやすいdplyr構文を利用できればとても嬉しいです。

ベストアンサー1

新しいバージョンでは、変数を引用符で囲んで作成し、評価時に引用符を解除(UQまたは!!)することができます。

var <- quo(color)
filter(df, UQ(var) == "blue")
#   color value
#1  blue     1
#2  blue     3
#3  blue     4

演算子の優先順位により、()ラップアラウンドが必要になる場合があります。!!

filter(df, (!!var) == "blue")
#   color value
#1  blue     1
#2  blue     3
#3  blue     4

新しいバージョンでは||優先順位が高くなるため、

filter(df, !! var == "blue")

動作するはずです(@Moody_Mudskipper のコメントどおり)

古いオプション

以下のものも使用される場合があります:

 filter(df, get(var, envir=as.environment(df))=="blue")
 #color value
 #1  blue     1
 #2  blue     3
 #3  blue     4

編集: 解決策の順序を変更しました

おすすめ記事