記号を含む列名の選択には爆竹を使う
こういうデータフレームがあるとする。
> (smp <- data.frame(`hoge(hage)`=1, fuga=2, check.names=FALSE)) hoge(hage) fuga 1 1 2
read.csv等を使ってデータを読み込んで、check.names=FALSEなどにしていない限り、列名の()などは.に変換される。
しかし、data.tableパッケージのfread関数を使って読み込むと、デフォルトでは()などを.に変換しない。
このようなdata.frameに対して、dplyrでselectをかけたりすると関数と勘違いしてエラーがでる。
> library(dplyr) > smp %>% select(hoge(hage)) Error in eval(expr, envir, enclos) : could not find function "hoge"
ここで列名を変換せずにselectをかけたいときはどうするか。
そんな時は`(バックティック)を使う。
> smp %>% select(`hoge(hage)`) hoge(hage) 1 1
文字列で選択したいときは`で囲んだ上で文字列とする。
> smp %>% select_("`hoge(hage)`") hoge(hage) 1 1
別にdplyrに限った話ではないのだが一応メモして残しておく。