メモ:最近のdplyr::select()は列を文字列で指定できますよ
なんか意外と知られていないようだったのでいちおうブログにも書いておくと、
select(iris, Sepal.Length, Petal.Length)
というのは、
select(iris, "Sepal.Length", "Petal.Length")
とも、
select(iris, c("Sepal.Length", "Petal.Length"))
とも書けます。
このへんは以下のスライドに書いたのでご参照ください。
参考: tidyeval
ちなみに、上のコードは、変数x
に列名を入れてselect()
するという書き方もできます。
x <- c("Sepal.Length", "Petal.Length") select(iris, x)
しかし、これはx
という名前の列がデータに含まれているとSepal.Length
とPetal.Length
ではなくそっちの列が選ばれてしまうので、!!
でunquoteしておく方が安全です。!!!
でもOKです。
select(iris, !! x)
tidyevalの詳しい説明は割愛しますが、!!
と!!!
はそれぞれ以下のようにx
を展開しています。
rlang::expr(select(iris, !! x)) #> select(iris, c("Sepal.Length", "Petal.Length")) rlang::expr(select(iris, !!! x)) #> select(iris, "Sepal.Length", "Petal.Length")