Rの基本2 プロジェクトとパッケージ

プロジェクトの作成

Rでは,プロジェクトごとに設定やフォルダを切り替えることができる。また,プロジェクトが開かれている状態では,プロジェクトのフォルダ内のファイルには相対パスでアクセスできる。プロジェクトフォルダが深い階層にあったとしても,プロジェクトフォルダを起点にしてファイルを指定すれば,そのファイルにアクセスできるため,長いフルパスを書く必要がなくなる。

プロジェクトを作成するには,RStudioのウィンドウの右上にあるプロジェクトメニューからNew Projectを選択する。新規に空のプロジェクトを作成するには,New Directory->New Projectの順に選択する。適当にプロジェクト名 (フォルダ名)を指定すれば,プロジェクトが作成される。

RStudioのプロジェクトメニュー

プロジェクトメニューの表示が,Project (None)からProject (プロジェクト名)に変わっていることを確認しよう。プロジェクトを切り替えるには,プロジェクトメニューからOpen Projectを選択して,切り替えたいプロジェクト (.Rprojファイル)を選択する。

ここから先の作業はプロジェクトを作成して行うようにしよう。

パッケージについて

インストールと読込み

Rは,追加のパッケージをインストールすることで機能を拡張できる。とくに,tidyverseパッケージには,データを取り扱う際に必要な機能が集約されており,現在ではRを用いた分析では,多くの場合tidyverseパッケージを利用する。

追加のパッケージをインストールするには,install.packages()関数を用いる。引数には,インストールしたいパッケージの名前を" "で囲って指定する。また,引数を,で区切れば,複数のパッケージを同時にインストールすることができる。

install.packages("tidyverse")

パッケージはインストールしただけで利用できるわけではなく,読込が必要である。パッケージを読み込むには,library()関数を用いる。

library(tidyverse)

renvによるパッケージの管理

Dockerで環境を構築している場合は,パッケージをインストールしてもコンテナを終了すればデータが消えてしまうため,毎回インストールが必要になる。しかし,tidyverseなどのパッケージはインストールにかなりの時間がかかるため,毎回インストールしてから作業を始めるというのは現実的ではない。

そのため,パッケージの管理にはrenvパッケージを用いる。renvパッケージは,パッケージ管理を目的としており,インストールしたパッケージとそのバージョンをrenv.lockファイルに記録する。また,パッケージ本体はキャッシュされる。

renvはホームフォルダにrenv.lockファイルと,パッケージ本体のキャッシュを保存する。そのため,Docker環境であっても,インストールしたパッケージを記録したり復元したりすることができる。renvを用いれば,プロジェクトを開いた際にパッケージのインストール状態を復元してくれる。

プロジェクトを作成したら,まずrenvパッケージをインストールして初期設定を行う。

install.packages("renv")
renv::init()

その後は,新しいパッケージをインストールした際に,スナップショット (renv.lockファイル)を作成する。

install.packages("tidyverse")
renv::snapshot()

これで,コンテナを終了しても,プロジェクトを開いた際にスナップショットを作成した時点のパッケージの状態が復元される。新しいパッケージをインストールしたときには,renv::snapshot()を実行して,スナップショットを更新するのを忘れないようにしよう。

renvパッケージを用いれば,プロジェクトごとに異なるバージョンのパッケージを利用したり,別のパソコンで同じ環境を構築したりすることができる。

renv.lockからパッケージを復元する際に,パッケージのキャッシュがなければインターネットからダウンロードしてビルドするため,renv.lockファイルを共有すれば別のコンピュータでもパッケージのインストール状態を再現できる。