install.packages("tidyverse")
tidyverse概論
ここでは、tidyverseはR上でデータサイエンスを円滑に行うためのパッケージ群、またそのパッケージのことを指します。次の図で示すように、tidyverseでは多種多様なデータ形式に対応したファイルの読み込みから、データ整形、可視化までを首尾一貫して行えるパッケージを提供されています。
これらのパッケージの開発者はPosit社のメンバーが中心となっており、統一的な設計思想に基づいて開発が行われています。そのため、各パッケージ間での利用方法の差異が少なく、連携が容易な点もtidyverseを使う一つの利点となります。
tidyverseパッケージは次のコマンドを実行することでインストールされます。たくさんのパッケージをインストールするため、少し時間がかかるかもしれません。ですが、一度インストールしておくと、tidyverseに含まれるパッケージを個別にインストールする手間がなくなります。
インストールは済みましたか?
それでは、tidyverseパッケージ(そしてそれに含まれる各種パッケージ)を 利用可能にしましょう。
tidyverseの読み込み時になにが起こっているか
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.2 ✔ readr 2.1.4
✔ forcats 1.0.0 ✔ stringr 1.5.0
✔ ggplot2 3.4.3 ✔ tibble 3.2.1
✔ lubridate 1.9.2 ✔ tidyr 1.3.0
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyverse)
を実行すると、コンソールにメッセージが表示されます。 メッセージは2つの内容を含んでいて、一つは利用可能となったパッケージについて、もう一つは関数名の衝突についての情報です。それぞれ詳しく見ていきましょう。
最初の出力では、tidyverseパッケージ本体のバージョン、またtidyverseによって読み込まれたtidyverseのコアパッケージとそのバージョンを出力しています。この資料を作成している段階では、tidyverseコアパッケージには次のものが含まれます(括弧内はバージョン)。
- dplyr (1.1.2)
- readr (2.1.4)
- forcats (1.0.0)
- stringr (1.5.0)
- ggplot (3.4.3)
- tibble (3.2.1)
- lubridate (1.9.2)
- tidyr (1.3.0)
- purrr (1.0.2)
Conflicts
と表示された2つめの出力は、tidyverseパッケージ群を読み込むことで発生した、関数名の競合状態を示すものです。関数名が競合するとはどういうことでしょう。
Rにはたくさんのパッケージがあり、各パッケージには関数が存在します。そのため、AとB、二つのパッケージで共通の名前をもつ関数(example()
関数とします)が利用可能な状態となることがしばしばあります。この場合、Aパッケージのexample()
関数を使いたいのに、Bパッケージのexample()
関数が実行されてしまう可能性があります。
tidyverse群の中で、dplyrパッケージのfilter()
関数およびlag()
関数は、Rの標準パッケージのstatsの同一名の関数と競合します。同じ名前の関数が複数のパッケージで利用できる状態では、後から読み込まれたパッケージが優先されます。そのため、この出力はdplyrパッケージのfilter()
関数とlag()
関数が利用されることを示すものとなっています。
関数の衝突問題を解決するためのconflictedパッケージもtidyverseに含まれています。パッケージ間での関数の優先順位を変更するのに役立ちますので、興味のある方はウェブページをご覧ください。
ライフサイクル
Posit社のHadley Wickhamを中心に、関数へのライフサイクルの表示を推奨しています。関数の実用段階に応じてライフサイクルを設定し、どの関数が実験的なものなのか、どの関数が廃止予定なのかをユーザーにわかりやすく伝えることが目的です。関数の開発速度が速いtidyverseパッケージ群では、このライフサイクルへの注意が重要です。
ライフサイクルには次の段階があります。
- experimental
- stable(デフォルト)
- superseded
- deprecated
パッケージがどのライフサイクル段階にあるのかは、関数のドキュメントを参照するとわかります。