バックティックの使いみち

ひとりアドベントカレンダー11日目。
Rにおいて原則として数字や記号から始まる変数名は使えません。
これはデータフレームにおける列名においても同様です。

> data.frame(1var="q")
 エラー:  想定外のシンボルです  in "data.frame(1var"

しかし、事情がありどうしても使いたい時があると思います。
例えばよくあるのが、%を用いた二項関数(infix function)の定義です。
%を用いた有名な二項関数に%>%がありますが、これを自分で定義しようとしてそのまま書いてもうまくいきません。

> %+% <- function(x, y)x+y
Error: unexpected SPECIAL in "%+%"

こういう時はバックティック(バッククオート)を使って定義します。

> `%+%` <- function(x,y)x+y
> 1 %+% 2
[1] 3

以下のように二重引用符を使っても定義できますが、中身を確認したい場合はバックティックを使う必要があるので
原則としてバックティックを使うと覚えておくと良いでしょう。

> "%+%" <- function(x,y)x+y
> 1 %+% 2
[1] 3
> "%+%"
[1] "%+%"
> `%+%`
function(x,y)x+y

ちなみに話が逸れますが、上記エラーメッセージは英語も日本語も同内容のものです。
同じ環境下なのになぜこのようなことになるのか。
その謎については以下のあらびき日記の記事をご覧ください。
http://d.hatena.ne.jp/a_bicky/20130704/1372894147

さて、二項関数の挙動について詳しく知りたい方はAdvanced Rを読むと良いでしょう。
来年にはなりますが、日本語訳も出るそうです。

R言語徹底解説

R言語徹底解説