6  ライブラリ

6.1 ライブラリとは?

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

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

Rを含めた多くのプログラミング言語では、nativeな言語ではできない機能を後から追加することができます。この追加する機能のセットのことを、ライブラリと呼びます(パッケージと呼ぶこともあります)。

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

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

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

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

6.2 ライブラリのインストール

6.2.1 CRANからのインストール

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

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

install.packages(tidyverse) # エラーが出る。ライブラリ名は文字列でないとダメ

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

6.3 ライブラリをロードする

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

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

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

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

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

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

6.3.1 ライブラリをロードせずに使用する

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

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

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

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

6.3.2 githubからのインストール

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

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

図1:GitHubのリポジトリ名

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

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

6.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"))

6.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)

6.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)の処理

6.6 その他の便利なライブラリ

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

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