RユーザのためのRStudio[実践]入門 という本が出ます。

というタイトルでみんな揃えているようなので、合わせてみました。↓この本(通称「宇宙本」)です。

もう紹介ポイントはだいぶ出尽くしている感じはするので、詳しい内容よりもエモみ重点で書きます。

著者紹介

まず、自分以外の著者紹介をします。

y__mattu

1章「RStudioの基礎」、2章「スクレイピングによるデータ収集」を担当したのは、若手Rおじさんの雄、@y__mattuです。Tokyo.R四天王の一角を占めるその実力は伊達ではありません。

1章は、RStudioのベーシックな使い方ですが、Emacsユーザでもあるy__mattuのエディタへのこだわりがところどころ垣間見える気がします。データの読み込みの説明は、Tokyo.Rの初心者セッションで場数を踏んでいるだけあって、こなれているなという感じです。 2章は、スクレイピング対象のページが締め切り直前にリニューアルしたり*1、rtweetパッケージの仕様が校正中に変わったりして、大変そうでした。あれはまじでお疲れ様でした。。

kyn02666

4章は、知る人ぞ知るggplot2マニア、@kyn02666です。 可視化系のパッケージとか情報がはやい。

ggplot2は、広く使われているパッケージでありながら、あまりドキュメントが充実しているとは言えません(そのへんがggplot2再入門というスライドをつくった動機でした)。 グラフィックスのためのRプログラミングの第二版*2がまだ和訳されていないいま、 ひとまずはこの宇宙本の4章が「ggplot2入門」の決定版ということでいいんじゃないでしょうか。おすすめです。

kazutan

日本でRStudioとR Markdownの本を書くとなれば、この人を置いて他にいないでしょう*3。そう、@kazutanです。 他の追随を許さないマニアックなR Markdown情報を発信し続ける彼の最新地点がこの5章です。

みたいな著者紹介をしておいてあれですが、あんまりマニアックなことは書かれておらず、初心者のためにかゆいところに手が届く感じの解説になっています。 再現可能性のすゝめと合わせて読んでも新たな発見がありそうです。

3章の紹介

さて、自分が書いた部分の紹介です。私が担当したのは3章「dplyr/tidyrによるデータ前処理」です。

(ちなみに、この場をお借りして謝っておくと、書名には「RStudio」と入っているのに3章にはRStudioのことがまったくでてきません😇 敗因はたぶん、「宇宙本」たる所以、tidyverseについて書くことに集中しすぎたことです...)

3章に書いたこと

dplyr/tidyrは、難しいです。 もちろん、なんとなく使ってもそこそこ使えるツールですが、深く考えだすと、「あれ、これどういう意味だっけ?」みたいな場面に遭遇しがちです。 たとえば、こういう↓select()mutate()の挙動の違いをちゃんと理解してdplyrを使っているでしょうか?

こんな感じの、背後にある概念やデザインについてちゃんと説明してくれているドキュメントを見かけないような気がしていて(特に日本語)、 宇宙本には細かい概念の説明をゴリゴリ書きました。すぐ使える技、というよりは、基本からしっかり、みたいなのを意識しました。

ちなみに個人的なことですが、これは「転職しなかったらRはきっぱりやめる!」と思っていた頃に書いたので、これでもう自分が死んでも誰かが遺志を継いでくれるだろう、という程度にはむだに気合が入っています。ベテランの人も、以下のようなキーワードを「ちゃんと理解してないかも?」と思ったらぜひ一度手に取ってみてください。きっと新たな発見があるはずです。

  • selectのセマンティクスとmutateのセマンティクス
  • tidyevalがなぜ必要なのか
  • ウィンドウ関数と集計関数、ベクトルのリサイクル
  • mutating joinとfiltering join

3章に書いていないこと

他の方も宣伝中で書いていますが、具体的なデータ分析の方法には触れていません。 3章は、あくまでデータ操作の基本について書いた章です。

DBに対して透過的にdplyrを使うに方法、つまりdbplyrパッケージについても触れていません。

tidyevalについては、軽く触れていますが詳しい説明は期待しないでください。 説明のためにはRの環境と評価の仕組みに立ち入る必要があり、コンパクトな説明を思いつきませんでした。

purrrについても触れていません。 purrrの関数はリストを操作したりするときに便利で私もよく使いますが、 初心者向けというのを考えた時に微妙なラインだと思ったので外すことにしました。 ちゃんと説明しようと思うと難しそうだし。

あと、重要なこととして、tidyrも、かなり基本的な使い方しか紹介していません。

tidyrの本質はgather()spread()といった関数で縦長データと横長データを行ったり来たりすることだと思ってるんですが、 実は、複雑なケースになると今のtidyrでカバーできない場面にしばしば遭遇します。 そして、Hadley自身もそれは認めるところです。reshape2ユーザが感じるもどかしさもこのあたりなのかもしれません。

カバーできないケースの例を挙げると、複数のキーでgatherするようなことは今のtidyrではうまくできません。

こんな風に、tidyrはまだまだ発展途上です。この発展を現在進行形で見れることがtidyverseを使う醍醐味だと個人的には思っていますが、 まだデザインが固まっていないものを扱うのはなるべく控えました。 ぜひ、この本を入り口として自分の目で追いかけてみてください。

感想

上にも書いたように、宇宙本3章は「これでもうRとはお別れかも」という気持ちで書いたので、いきおい気合が入っています。 別に内容に自信があるかというとそういうわけではなく、たぶんうまく書けていないところや間違っているところもあると思うんですが、それも含めて実力を出し切った気持ちでいます。 そこまでたゆまぬ努力でがんばれたのは、共同執筆者の方々に示唆ある指摘をもらったり、あるいは他の章の文章に触発されたりしたこと、そして、そんな私たちを導きながら絶妙に宇宙を編んでいく編集Tさんのおかげだと思っています。ありがとうございました。

幸いまだまだRとの付き合いは続いていきそうなので、読んだ方は忌憚のない感想を聞かせてもらえるとうれしいです。 ぜひ手に取ってみてください。

*1:そう、あのサイトです...

*2:ソースは公開されています。これをビルドするのはだいぶ茨の道ですが... https://github.com/hadley/ggplot2-book/

*3:kohskeさんを別にすれば