パッケージのインストール
install.packages("tidyverse") # tidyverseというパッケージをインストールする
install.packages(c("tidyverse", "pacman")) # 複数のパッケージ名をベクターで与えることもできる
install.packages(tidyverse) # エラーが出る。パッケージ名は文字列でないとダメ
.libPaths() # パッケージのインストール先(ライブラリ)を表示Rは統計のプログラミング言語であり、インストールしてすぐに統計の計算を行うことができるよう設計されています。例えば、代表的な統計処理である、平均値や標準偏差の計算、t検定や分散分析、グラフの作図等は、Rをインストールし、起動した次の瞬間から実行することができます。
しかし、この素の(nativeな)Rでは、近年開発された現代的な統計手法や、優れたデザインやインタラクティブ性を持つグラフの作成、複雑なデータの効率的な整理、Webページの作成など、現代のプログラミング言語に備わる機能のすべてを用いることはできません。
Rを含めた多くのプログラミング言語では、nativeな言語にはない機能を後から追加することができます。この追加する機能のセットのことを、パッケージと呼びます。また、この追加したパッケージのリストやファイルを保存している場所のことをライブラリと呼びます。
Rのパッケージは(基本的には)CRANで管理されており、審査が行われた上で登録されています。パッケージはCRANのリポジトリ(データを格納する場所のこと)に保存されており、RのユーザーはこのCRANのリポジトリから、必要なパッケージをインストールして用いることになります。インストールしたパッケージはライブラリ、自分のPCのフォルダに保存されます。
パッケージは、インストールしただけでは用いることができません。パッケージを読み込み(ロード、load)、メモリ上に展開しておくことでパッケージの機能を用いることができるようになります。この読み込みはRを起動するたびに行います。パッケージの機能は関連する関数群として実装されていますので、ロードすることでパッケージに登録されている関数を用いることができるようになります。
パッケージをいちいち読み込むのは面倒ではありますが、必要ないパッケージを読み込んでしまうと、その分メモリを食うことになります。必要ないパッケージは読み込まないことで、メモリを節約し、プログラムの動作を軽くすることができます。他の言語にも同様の機能が備わっており、必要なパッケージのみを読み込んで用いるのが一般的です。
Rでは、デフォルトのワーキングディレクトリに.Rprofileというファイルを保存しておけば、この中身のプログラムをR起動時に実行してくれるという仕組みがあります。.Rprofileにいつも使うパッケージをロードするように、スクリプトを準備しておいてもよいかもしれません。
上記のように、パッケージはまずインストールしないと用いることはできません。Rでパッケージをインストールする時には、install.packages関数を用います。install.packages関数の引数は文字列のパッケージ名です。ですので、パッケージ名をダブルクオーテーションで囲う必要があります。パッケージは自動的にダウンロードされ、.libPaths関数で表示されるフォルダ、つまりライブラリにインストールされます。
パッケージのインストール
install.packages("tidyverse") # tidyverseというパッケージをインストールする
install.packages(c("tidyverse", "pacman")) # 複数のパッケージ名をベクターで与えることもできる
install.packages(tidyverse) # エラーが出る。パッケージ名は文字列でないとダメ
.libPaths() # パッケージのインストール先(ライブラリ)を表示パッケージをロードするときには、library関数を用います。library関数の引数は、文字列ではないパッケージ名です。文字列のパッケージ名でも読み込みはできますが、ダブルクオーテーションで囲う必要はありません。
同様にrequire関数でもパッケージを読み込むことができます。require関数では、パッケージの読み込みに成功するとTRUEが、失敗するとFALSEが返り値として返ってくるという特徴があります。
library関数を引数なしで実行すると、インストールされているパッケージの一覧(ライブラリ)が表示されます。
パッケージには、読み込み時にメッセージを表示するものがあります。例えば上記のtidyverseパッケージは読み込み時にメッセージが表示されます。
パッケージ読み込み時のメッセージを表示させたくない場合には、suppressPackageStartupMessagesという関数を用います。
メッセージを表示せずにパッケージを読み込む
パッケージに登録されている関数を用いるには、通常ロードする必要がありますが、パッケージをロードしなくても個別の機能(関数)を用いることはできます。パッケージをロードせずにそのパッケージの関数を用いるときには、「パッケージ名::関数名」という形で関数を呼び出します。
最近では、最新のパッケージは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のページにはリポジトリ名が記載されています。
GitHubからのパッケージのインストール
# flipPlotsというパッケージをGitHubからインストールする(インストールは自己責任で)
# pak::pak("Displayr/flipPlots") GitHubは、Git(バージョン管理システム)というものと連携して用いる、リモートリポジトリと呼ばれるものです。RstudioからGit及びGitHubを利用することもできます。
生物系の統計手法(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"))パッケージはインストールしないとロードすることができません。ですので、インストールしていないパッケージをロードしようとするととエラーが出ます。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)近年の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に含まれているパッケージを以下に示します。個別の、重要なパッケージに関しては別章で説明します。
| パッケージ名 | パッケージの主な機能 |
|---|---|
| dpylr | データフレームの編集 |
| tidyr | データフレームの変形(縦・横持ち) |
| ggplot2 | 現代的なデザインのグラフ作成 |
| tibble | 使いやすいデータフレームの提供 |
| stringr | 文字列の処理 |
| purrr | リストへの関数の適用 |
| readr | データ読み込み |
| forcats | 因子(factor)の処理 |
tidyverseの他にも、データ処理を簡単にしたり、インタラクティブなグラフを作成したり、Rで文書を作成したりするためのパッケージをRは備えています。以下によく用いられるパッケージを示します。統計に関するパッケージも無数に存在します。統計に関するパッケージについては、統計手法の説明の際に紹介します。
| パッケージ名 | パッケージの主な機能 |
|---|---|
| magrittr | パイプ演算子を提供 |
| readxl | Excelファイルの読み込み |
| googlesheet4 | Googleスプレッドシートの読み込み |
| lubridate | 日時データの処理 |
| broom | 統計結果の変形 |
| DT | 美しい表の作成 |
| plotly | インタラクティブなグラフの作成 |
| Rmarkdown | 文書の作成 |
| shiny | Webアプリケーションの作成 |
| pacman | ライブラリのインストール・ロード |