「R言語徹底解説」

Rの解説書の中で、おそらく最もディープな内容の名著の翻訳「R言語徹底解説」 をご恵贈いただきましたので、ご紹介します。

表紙写真

原著者は ggplot2, dplyr を始め、本当に色々な、革新的なパッケージを作られている Hadley Wickham 氏です。Hadley先生の作るパッケージは、本書でも説明されているような演算子オーバーロードや非標準評価の仕組みを駆使しているので、一見するとRとは違う言語のように見えてしまう文法を使うことができ、非常に効率的な書き方ができるのが特徴かなと思います。

ただ、実は個人的にはggplot2もdplyrも今まではあまり積極的には使ってきませんでした。古典的なRの文法に慣れてしまっているので、これらのパッケージの関数群と、これらのパッケージの外の関数やデータを組み合わせるのが面倒だったのが理由の一つでした。では、本書を読むのは敷居が高いかというと....

それは全く違います。この本は、パッケージの使い方や、パッケージを使ったプログラミングのやり方を説明する本ではなく、Rの標準の機能を使っていかにして良いRプログラムを書くか、ということを詳細に突き詰めた本だからです。

Rプログラミングについては、本書から入門するのはちょっと勧められませんが、逆に本書さえあれば、他の本を参照する必要は全くありません。というのも、一つ一つのトピックについて、常に深くその挙動を掘り下げて解説してくれているからです。

例えば、データフレームについて、普通の本では各列には数値か文字列のベクトル(本書的には、「アトミックベクトル」)を入れるところまでしか説明しないと思うんですが、本書ではあえてそこにリストを入れる方法まで説明されています。これは、Rをインタラクティブに使って、自分のデータをちょっと解析してみよう、というユーザーにはあまり必要のない知識かもしれません。しかし、今後も繰り返し使うことができる、汎用的な関数を作成したり、作成した関数を自分以外の、すなわち自分が想像もしなかったような突拍子もない使い方をするかもしれないユーザーにも使ってもらおう、とした時には、このような情報が非常に役立ちます。今までであれば、Rの公式マニュアルだけでもわからず、ソースコードまで丹念に読みとかなければわからなかった挙動が、本書1冊だけですんなりと理解でき、不可思議だったエラーの原因についても理解できるのは素晴らしいことです。

よって、本書はRで「プログラミング」をする人にとってのバイブルと言っても良いでしょう。本書の各章の冒頭では、クイズ形式でその章を飛ばしてもいいのかどうかの質問がありますが、それにならって、こんな風に書いてみます。

以下のうち、知らないことがあったら、本書を読むべきでしょう:

  • x[-which(y)]はx[!y]と等価ではない
  • "`" (Backtick) の意味
  • ある変数がS4オブジェクトであることを判定する方法
  • 環境とリストの違い
  • apply系関数に与える関数には、try()をつけるべき
  • 自分で書く関数の内部では、sapply()は使わずvapply()を使うべき

もっとたくさんありますが、最初の第I部で書かれている内容だけでこれだけ挙げることができます。Rで単に自分のデータの処理をする、というところから進んで、Rでプログラミングをする、という場合には、文字通り必携の書といっていいでしょう。