10  パッケージとライブラリ

10.1 ライブラリとは?

Rは統計のプログラミング言語であり、インストールしてすぐに統計の計算を行うことができるよう設計されています。例えば、代表的な統計処理である、平均値や標準偏差の計算、t検定や分散分析、グラフの作図等は、Rをインストールし、起動した次の瞬間から実行することができます。

しかし、この素の(nativeな)Rでは、近年開発された現代的な統計手法や、優れたデザインやインタラクティブ性を持つグラフの作成、複雑なデータの効率的な整理、Webページの作成など、現代のプログラミング言語に備わる機能のすべてを用いることはできません。

Rを含めた多くのプログラミング言語では、nativeな言語にはない機能を後から追加することができます。この追加する機能のセットのことを、パッケージと呼びます。また、この追加したパッケージのリストやファイルを保存している場所のことをライブラリと呼びます。

Rのパッケージは(基本的には)CRANで管理されており、審査が行われた上で登録されています。パッケージはCRANのリポジトリ(データを格納する場所のこと)に保存されており、RのユーザーはこのCRANのリポジトリから、必要なパッケージをインストールして用いることになります。インストールしたパッケージはライブラリ、自分のPCのフォルダに保存されます。

パッケージは、インストールしただけでは用いることができません。パッケージを読み込み(ロード、load)、メモリ上に展開しておくことでパッケージの機能を用いることができるようになります。この読み込みはRを起動するたびに行います。パッケージの機能は関連する関数群として実装されていますので、ロードすることでパッケージに登録されている関数を用いることができるようになります。

パッケージをいちいち読み込むのは面倒ではありますが、必要ないパッケージを読み込んでしまうと、その分メモリを食うことになります。必要ないパッケージは読み込まないことで、メモリを節約し、プログラムの動作を軽くすることができます。他の言語にも同様の機能が備わっており、必要なパッケージのみを読み込んで用いるのが一般的です。

Rでは、デフォルトのワーキングディレクトリに.Rprofileというファイルを保存しておけば、この中身のプログラムをR起動時に実行してくれるという仕組みがあります。.Rprofileにいつも使うパッケージをロードするように、スクリプトを準備しておいてもよいかもしれません。

10.2 パッケージのインストール

10.2.1 CRANからのインストール

上記のように、パッケージはまずインストールしないと用いることはできません。Rでパッケージをインストールする時には、install.packages関数を用います。install.packages関数の引数は文字列のパッケージ名です。ですので、パッケージ名をダブルクオーテーションで囲う必要があります。パッケージは自動的にダウンロードされ、.libPaths関数で表示されるフォルダ、つまりライブラリにインストールされます。

パッケージのインストール
install.packages("tidyverse") # tidyverseというパッケージをインストールする
install.packages(c("tidyverse", "pacman")) # 複数のパッケージ名をベクターで与えることもできる

install.packages(tidyverse) # エラーが出る。パッケージ名は文字列でないとダメ

.libPaths() # パッケージのインストール先(ライブラリ)を表示

10.3 パッケージをロードする

パッケージをロードするときには、library関数を用います。library関数の引数は、文字列ではないパッケージ名です。文字列のパッケージ名でも読み込みはできますが、ダブルクオーテーションで囲う必要はありません。

同様にrequire関数でもパッケージを読み込むことができます。require関数では、パッケージの読み込みに成功するとTRUEが、失敗するとFALSEが返り値として返ってくるという特徴があります。

library関数を引数なしで実行すると、インストールされているパッケージの一覧(ライブラリ)が表示されます。

パッケージをロードする
library(tidyverse) # tidyverseパッケージを読み込む
library("pacman") # pacmanパッケージを読み込む(文字列)

require(pacman) # requireによる読み込み(読み込みができたらTRUEが返ってくる)

library() # ライブラリの一覧を表示する

パッケージには、読み込み時にメッセージを表示するものがあります。例えば上記のtidyverseパッケージは読み込み時にメッセージが表示されます。

パッケージ読み込み時のメッセージを表示させたくない場合には、suppressPackageStartupMessagesという関数を用います。

メッセージを表示せずにパッケージを読み込む

10.3.1 パッケージをロードせずに使用する

パッケージに登録されている関数を用いるには、通常ロードする必要がありますが、パッケージをロードしなくても個別の機能(関数)を用いることはできます。パッケージをロードせずにそのパッケージの関数を用いるときには、「パッケージ名::関数名」という形で関数を呼び出します。

パッケージをロードせずに関数を用いる
# install.packages("lubridate") であらかじめパッケージのインストールが必要

ymd("2023-10-10") # lubridateパッケージの関数はパッケージをロードしないと使えない
## Error in `ymd()`:
## ! could not find function "ymd"

lubridate::ymd("2023-10-10") # パッケージ名::関数名でロードしなくても関数が使える
## [1] "2023-10-10"

10.3.2 githubからのインストール

最近では、最新のパッケージはCRANだけでなく、GitHubというプログラム開発プラットフォームからインストールすることもあります。ただし、GitHub上のパッケージはCRANによるチェックを受けていないものですので、インストールする際には注意が必要です。GitHubからのパッケージのインストールには、pak (Csárdi and Hester 2024)パッケージのpak関数を用います。引数には、パッケージのリポジトリというものを文字列で取ります。

例えば、Displayrという会社が開発しているflipPlotsというパッケージをGitHubからインストールする場合には、GitHubの対象のページのアドレス(https://github.com/Displayr/flipPlots)のうち、後ろの2つの項目(Displayr/flipPlots)をリポジトリとして取り扱います。GitHubのページにはリポジトリ名が記載されています。

図1:GitHubのリポジトリ名

図1:GitHubのリポジトリ名
GitHubからのパッケージのインストール
# flipPlotsというパッケージをGitHubからインストールする(インストールは自己責任で)
# pak::pak("Displayr/flipPlots") 

GitHubは、Git(バージョン管理システム)というものと連携して用いる、リモートリポジトリと呼ばれるものです。RstudioからGit及びGitHubを利用することもできます。

10.3.3 Bioconductorからのインストール

生物系の統計手法(DNAのアライメントやシーケンサーデータの処理、系統樹の計算等)のパッケージを専門的に取り扱っているのが、Bioconductorです。Bioconductorに設定されているパッケージはCRANやgithubのものとは取り扱いが少し異なります。

Bioconductorのパッケージを利用するには、BiocManager (Morgan and Ramos 2023)というパッケージをあらかじめインストールする必要があります。BioconductorのライブラリのインストールにはこのBiocManegerパッケージのinstall関数を用います。install関数を引数なしで用いると、Bioconductorのコアライブラリをすべてインストールすることができます。特定のパッケージをインストールするときには、引数に文字列のパッケージ名を入力します。

インストールしたBioconductorのパッケージのロードは通常のパッケージと同様にlibrary関数で行うことができます。

Bioconductorのパッケージをインストール
install.packages("BiocManager") # BioManagerパッケージのインストール
BiocManager::install() # Bioconductorのコアライブラリをインストールする
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))

10.4 パッケージを簡単に取り扱う:pacman

パッケージはインストールしないとロードすることができません。ですので、インストールしていないパッケージをロードしようとするととエラーが出ます。if文を用いると、パッケージがインストールされていないときにはインストールしてロード、インストールされているときにはロードが実行されるようにすることもできます。

pacman::p_load関数によるパッケージのロード
# climetricsパッケージ(気候変化に関するパッケージ)は
# インストールされていないので、エラーが出る
library(climetrics) 

require(climetrics) # インストールしないと読み込めないので、FALSEが返ってくる

# require関数でFALSEが返ってきたら、パッケージをインストールする
if(!require(climetrics)) install.packages("climetrics")

このif文とrequire関数を用いる書き方は長い間使用されてきましたが、やや複雑で覚えにくいものです。このようなパッケージの取り扱いを簡単にしてくれるのがpacman (Rinker and Kurkiewicz 2018)パッケージです。近年では、このpacmanパッケージのp_load関数を用いてパッケージをロードすることも増えてきています。p_load関数を用いるには、pacmanパッケージをロードする必要があります。パッケージのロードのために別途pacmanだけロードするのは面倒ですので、pacman::p_loadという形で、パッケージをロードすることなく関数だけ用いるのが一般的です。この他に、pak(Csárdi and Hester 2024)と呼ばれるパッケージ管理のパッケージも最近ではよく用いられています。

pacman::p_load関数を用いたパッケージのロード
# パッケージをロードする(インストールされてなければインストールしてからロードする)
pacman::p_load(tidyverse, lubridate)

10.5 tidyverse

近年のRでは、Posit(旧Rstudio、IDEであるRstudioの開発元)およびPositのチーフサイエンティストであるHadley Wickhamが中心となって作成された複数のパッケージのセットである、tidyverse (Wickham et al. 2019)を用いるのがほぼ常識となっています。tidyverseのパッケージ群を用いなくてもRを使うことはできますが、このパッケージ群を用いることでデータの整理・グラフ作成・文字列の処理等を簡単に行うことができるようになります。tidyverseのパッケージ群は以下のように一度にインストール・ロードすることができます。

tidyverseのインストールと読み込み
pacman::p_load(tidyverse) # tideverseのインストール・ロード(install.packages・library関数でも可)

tidyverseに含まれているパッケージを以下に示します。個別の、重要なパッケージに関しては別章で説明します。

表1:tidyverseに含まれるパッケージ群
パッケージ名 パッケージの主な機能
dpylr データフレームの編集
tidyr データフレームの変形(縦・横持ち)
ggplot2 現代的なデザインのグラフ作成
tibble 使いやすいデータフレームの提供
stringr 文字列の処理
purrr リストへの関数の適用
readr データ読み込み
forcats 因子(factor)の処理

10.6 その他の便利なパッケージ

tidyverseの他にも、データ処理を簡単にしたり、インタラクティブなグラフを作成したり、Rで文書を作成したりするためのパッケージをRは備えています。以下によく用いられるパッケージを示します。統計に関するパッケージも無数に存在します。統計に関するパッケージについては、統計手法の説明の際に紹介します。

表2:Rで用いられている便利なパッケージ
パッケージ名 パッケージの主な機能
magrittr パイプ演算子を提供
readxl Excelファイルの読み込み
googlesheet4 Googleスプレッドシートの読み込み
lubridate 日時データの処理
broom 統計結果の変形
DT 美しい表の作成
plotly インタラクティブなグラフの作成
Rmarkdown 文書の作成
shiny Webアプリケーションの作成
pacman ライブラリのインストール・ロード
Back to top