cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

改訂2版 RユーザのためのRStudio実践入門のおすすめポイント

RユーザのためのRStudio[実践]入門」の改訂2版を執筆者の一人、湯谷さん(id:yutannihilation)から頂いた。ありがとうございます。感謝の言葉と合わせて、書籍の紹介と読んだ感想について書いておく。

電子版はすでに発売されていて、紙版も今月3日に発売ということだ。この記事を読む人がRに対してどの程度慣れているか、また初版を持っているかどうかわからないのでそれぞれの視点で参考になるように書いてみた。購入を迷われている方の参考となれば幸いである。

R言語の初心者、初版を持っていない方へ

本書は2018年に刊行された「RユーザのためのRStudio[実践]入門~tidyverseによるモダンな分析フローの世界」の改訂2版である。初版は表紙のデザインから「#宇宙本」の愛称で呼ばれる。

「宇宙本」はタイトルに「Rユーザのため」とあるように幅広い対象読者を想定している。以下に各章の内容を箇条書きで示すが、これらの内容はどんな分野であっても役に立つスキルとなっている。

  • Rの実行環境であり、伴侶となるRStudio
  • データ入力とウェブデータの取り扱い
  • データハンドリング
  • 可視化
  • レポート作成

なので、まずはR言語の初心者に本書をおすすめしたい。本書はR言語の入門書ではないので、オブジェクトの扱いであったりパッケージや関数の関係を伝えるものではない。また統計解析やプログラミングの細かな話も出てこない。しかし先に書いた通り、Rを使う上で役立つ内容がカバーされている。

特に読者にとって嬉しいのは扱われる項目がtidyverse中心となっている点である。tidyverseについて初心者は知らないと思うので本書から引用させてもらう。

本書では、tidyverseと呼ばれるパッケージ群を積極的に使います。tidyverseは、単なるパッケージの寄せ集めではなく、さまざまな操作を統一的なインターフェースで直感的に行える「tidyなツール群」を目指すものです。

tidyverseを扱わずに本書のような内容をまとめることはできるだろう。しかしtidyverseを使わなれば広い内容の解説が複雑になり、まとまりを欠いてしまうのは避けられないはずだ。tidyverseには確立されたマニフェストがある。本書はそれにならったパッケージを中心に扱っている。そのため関数や引数の指定に関して疑問を持つことが少ないのではないかと思う(少なくともわかりやすい関数名やパイプ演算子を使った処理を念頭に入れている点では)。

章の内容はもっと深く学べるものであるが、そこに入り込むと一冊の本になってしまう。特にデータハンドリングや可視化の作業は現実のデータ分析の場面にならないとわからないこともあると思う。しかしそうした現実問題においても本書の内容が役立つ機会があるはずだ。ゆえにRでの分析作業を進める上で必要な内容を一冊で学ぶことができる本書を勧めたい。

初版を持っている人へ

「宇宙本」の改訂版が出ると話を聞いて「なぜこの時期に?」というのが、初版を持っている私の最初の感想である。しかし理由はきちんとある。それはtidyverseの個々のパッケージに変更が加えられ、関数の追加・変更があったためだ。

本書のテーマとなっているRStudio、tidyverseの開発速度は速い。とりわけ、データハンドリングで欠かせないdplyr、tidyrパッケージのバージョンは初版ではそれぞれ0.7.4、0.7.2である。最新版はdplyr 1.0.6、tidyr 1.1.3なので、メジャーリリースである1.0.0を超えた点には注意である。また2章のウェブデータスクレイピングで取り上げられるrvestパッケージも1.0.0となっている。

メジャーリリースとなると、これまでのパッケージの使い方に対して大きな変化があることが多い。具体例をあげると、rvestパッケージは1.0.0となったことで html_node()html_nodes()に取って代わる関数としてhtml_element()html_elements()が提供された。また、dplyrでの複数列への処理で*_at*_if()*_all()を使うのは古いやり方で、今はacross()を利用するのが推奨されている。tidyrの縦長・横長にデータの形を変形させる関数 gather()spread()pivot_longer()pivot_wider()に切り替わっている。本書はそうしたパッケージの更新を追うように加筆・修正が加えられている。当然、今後もこうした変更は入るだろう。しかし古い関数をいつまでも使っているわけにはいかない。書かれている内容として変わりはないようであるが、3年前の情報からアップデートし、2021年時点の情報(セーブポイント)として本書は重要なのだ。

また改訂2版では付録として

  • stringrによる文字列データの処理
  • lubridateによる日付・時刻データの処理

が追加されている。いずれもtidyverseのパッケージを扱っており、多くの場面で応用できる内容となっている。初版を読まれた方の中で、データ分析をしているときに文字列や日付・時刻データの処理に戸惑ったという人もいるのではないかと思う。3年前にはこれがなかった。なのでより実務の中で本書が活躍する機会が増えるのではないかと期待する。(欲を言えば、dplyrやggplot2の処理と合わせてこれらをどう使うのか、より応用的な解説があっても良いと思うが)

以上、内容が刷新され、より実務向きに参照できるようになったという理由で、初版をお持ちの方にも改訂2版をお勧めする。

なんとなくの物足りなさ

既存の内容についての変更は素晴らしいが、せっかくの改訂版なので、内容を追加されても良かったのでは?と思うところがいくつかある。これについては著者がそれぞれ悩まれていることだし外野が騒いでも仕方がないことだけど、一読者の感想として簡単に書いておく。

  • 以前の関数名との比較 ... アップデートした関数は書かれているが、それが古い関数の何と対応しているのか書かれていない。それがないと過去のコードを見たときに比較、置き換えることができないのではと思う。
  • 関数のlife cycle ... tidyverseのパッケージに含まれる関数の多くは、関数の開発状況に応じて"life cycle"と呼ばれるバッジをドキュメントに付与している。これを見ると、関数が安定して利用できるものなのか、廃止されたものなのかといった情報を得られる。本書が出た後でも読者がtidyverseパッケージの更新を追えるように、この情報の存在について書かれていても良かった。
  • ウェブデータ取得でのhttrパッケージの存在 ... APIの例でhttrに触れずにrtweet、Seleniumの例だったのはなぜか。
  • R 3.4.3から4.X.Y系へのアップデート ... R本体の内容は触れなくても良かったと思う一方、data.frame(stringsAsFactors = )の挙動が変わった点は多くのユーザにとって影響が大きいと思う。これによって、組み込みのread.csv()では文字列の読み込みがデフォルトで因子型でなくなった。
  • ggplot2パッケージのgeom_sf()
  • RStudioの作図デバイスバックエンドでのAGGの利用 ... RStudio 1.4.1103でも利用可能

uribo.hatenablog.com

最後は少し愚痴っぽくなってしまった。お許しいただきたい。