R言語の上級者になりたければ『R言語徹底解説』を読もう

概要
『R言語徹底解説』にはプログラミング言語としてのR言語の仕組みが詳しく書かれており、効率的なプログラムを作る方法など、上級者になるために必要なことを学ぶ助けになる。

はじめに

R言語徹底解説』という本を紹介したいと思う。この本は、R言語の中級者から上級者になるための助けになる本だ。この本を通じて、上級者になるために不可欠なR言語の仕組みを学べるのだ。

なお、英語の原文は以下にしめすアドレスで全文無料公開されている。

どのような人が読むべきか

この本は、プログラミング言語としてのRの仕組みを詳しく学ぶための本である。先に触れたように、Rの中級者が上級者になりたいと考えているときに読むと良い。なお、ここでの中級者・上級者は、以下のようなものをイメージしている(もちろん分析手法の難易度によって一概に言えないところはあるのだが)。

また、この本の扱っている内容はなかなか難しいので、Rの初心者には向かない。初心者がRについてプログラミング言語的側面も含めて学びたければ、以下の2冊を読むことをおすすめする。

非プログラマとR

Rはプログラミング言語だ。それは間違いない。ただ、普通のプログラミング言語と違うところがある。それは、プログラマでない人が使うことが多いということだ。

Rは統計処理に優れた言語であり、専業のプログラマが使うというより、統計処理が必要となる科学者などが使うことが多いと思われる。こうした人たちは、統計が分かっていたとしても、プログラミングが必ずしも得意とは限らず、効率的でないプログラムを書いてしまうことがある。以下の引用は、Rに限定された話ではないが、統計処理を必要とする科学者が書いたプログラムの様子をうかがわせるものだ。

プロのプログラマーは、学術界にいるプログラミングを自習した友人が書いたぞっとするようなコードについての話を交わすことがしばしばある。

Reinhart, A.〔著〕、西原史暁〔訳〕.(2017).『ダメな統計学』東京:勁草書房.

正直なところ、「ぞっとするようなコード」でもなんとか分析はできてしまう側面はある。しかし、それは効率的ではないし、ミスを引き起こしやすい。

そうならないためにも、本格的にRを使いこなしたいのであれば、プログラミング言語としてのRの仕組みを良く理解しておく必要がある。

Can one be a good data analyst without being a half-good programmer? The short answer to that is, ‘No’. The long answer to that is, ‘No!’.

(引用者訳:ある程度優秀なプログラマになることなしに、優秀なデータ分析者になれるだろうか? その答えを短く言えば、「否」だ。その答えを長く言えば、「否」だ。)

Frank Harrell at the 1999 S-PLUS User Conference, New Orleans (October 1999)

この本で得られるもの

Rの中級者から上級者にあがっていくためには、R言語の仕組みをよく知る必要がある。
Rの中級者から上級者にあがっていくためには、R言語の仕組みをよく知る必要がある [1]

この本では、プログラミング言語としてのRの仕組みを学べる。これを学ぶことで、Rによるプログラムが効率的再利用可能なものになる。

データ分析について学びはじめた当初は、それほど大量のデータは扱わないかもしれない。しかし、成長するにつれ、だんだんと大量の複雑なデータを扱いたいと思うようになってくることがあるかもしれない。そういったときに、効率化ができないと、1時間で済むことが何日もかかってしまうかもしれない。また、途中でとんでもないミスをしてしまうかもしれない。

そのような悲劇を防ぐためには、Rというプログラミング言語の特色を知っている必要がある。問題が発生したときに、言語の特色を知っていれば解決するのに役立つ。

例えば、ある関数を呼び出しそうとしたときに、それがうまく見つからないことがある。その原因は、探そうとしたものが、レキシカルスコープの中に入っていないことにあるかもしれない。このような場合、Rのレキシカルスコープの仕組みを知らないと問題はうまく解決できない。(なお、レキシカルスコープの話は、『R言語徹底解説』の6.2節に載っている。)

具体的内容

この本に載っている話題は多岐にわたる。主な内容を以下に挙げておこう。

また、ベクトルや関数など、Rの入門書にも載っているような基本的な要素についても説明がある。ただし、入門書とは違って、さらに事細かに説明している。

なお、この本の原著が2015年に出たということもあり、purrrパッケージのように比較的最近出てきたものは扱われていない。ただ、そのことをもってこの本が足りていないというつもりはない。この本は、Rというプログラミング言語のより根源的な話を説明しているのであり、それは簡単に時代遅れになるものではない。つまりは、新しいパッケージが出てこようとも、色あせないような内容だということだ。

説明のスタイル

この本は、扱っている内容こそ難しい内容が多いものの、説明は比較的分かりやすいものになっている。例えば、どんなことを話すかについても各章のはじめに分かりやすくまとめられているため、話の流れが見やすくなっている。

また、この本にはさまざまなところにクイズやエクササイズ(練習問題)が載っており、こうした問題を解くことで理解が深まる仕組みになっている。

多くの章の冒頭には、読み手の理解の程度を問うクイズが付いている。冒頭を読む時点でこのクイズの答えが分かる必要はない。答えはその章の最後にまとめて書いてあるし、そこまで行かなくても読んでいくうちに自ずから答えが分かるようになっている。逆に見ると、冒頭のクイズは、どのようなところに注意して読むべきかを示してくれる指標として捉えることもできる。

また、クイズのほかに、多数のエクササイズが付いており、これを解くことで理解が深められるようになっている。

読み方

この本は、できれば1回通読しておこう。分厚いので、読み終えるまで時間がかかるかもしれない。しかし、通読することでR言語を使いこなす際に必要となる知識を全面的に知ることができる。苦労するだけの価値はある。

通読する際には全部を事細かに理解しなくてもかまわないと思う。どういう話が載っているのか大体分かれば、Rプログラミングでつまずいたときのリファレンスとして、手に取りやすい場所に置いておこう。つまずいたときに、辞書を引くようにこの本の関連する部分を調べれば良い。

まとめ

というわけで、Rの上級者になりたい人は、『R言語徹底解説』を読んでおこう。この本を読めば、Rのプログラミング言語としての側面をしっかり学ぶことができ、引いては自分が書くRの分析プログラムが効率的で使いやすいものになるだろう。

分厚い内容を理解するのは大変かもしれないが、それだけの価値はある本だ。

脚注
  1. Pixabay より Free-Photos 氏のパブリックドメイン画像を使用。 []