読者です 読者をやめる 読者になる 読者になる

Rのパッケージ管理

R
スポンサーリンク

Rのパッケージのインストール、アンインストールからヘルプの使い方などをまとめました。日本語の記事が少ないのでヘルプはよく使いますね。

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

パッケージのインストールにはinstall.packages()を使用します。この関数を使用するとCRANで公開されているパッケージをインストールします。dependencies=<TRUE or T>を指定すると依存関係のあるパッケージもまとめてインストールしてくれます。

> install.packages("stringi", dependencies = TRUE)
 URL 'https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.2/stringi_0.5-5.tgz' を試しています 
Content type 'application/x-gzip' length 12685069 bytes (12.1 MB)
==================================================
downloaded 12.1 MB
...

複数のパッケージを1回でインストールしたい場合はc()関数を使用します。

> install.packages(c("stringi", "plyr", "knitr"))

古いバージョンのパッケージや個人のサイトで公開されているパッケージをインストールしたい場合は、対象のパッケージをダウンロードして、以下のように圧縮されたファイルのまま指定します。

install.packages("package.tar.gz", repos = NULL, type = "source")

インストール先のミラーサイトは指定することができますが、RStudioで何も指定せず実行したらhttp://cran.rstudio.com/が使われてました。速さは特に気にならないのでとりあえずこのままにしておこうと思います。 【検証】CRAN ミラーはどこが速い? - Qiita

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

パッケージの削除にはremove.packages()を使用します。インストールと同様にc()関数で複数のパッケージを指定できます。

> remove.packages("stringi")
> remove.packages(c("stringi", "plyr", "knitr"))

パッケージのアップデート

パッケージの更新にはupdate.packages()を使用します。パッケージ毎にアップデートするか確認 (y/N/c) されますので選択してください。

> update.packages()
boot :
 Version 1.3-16 installed in /Library/Frameworks/R.framework/Versions/3.2/Resources/library 
 Version 1.3-17 available at https://cran.rstudio.com
Update (y/N/c)?  y
...

パッケージを読み込む

インストールしたパッケージを使用するには読み込む(ロードする)必要があります。

> library("package")
> require("package")

パッケージを読み込む関数にはlibraryrequireがありますが、違いは  R関連(1) requireとlibraryの違い -パッケージのインポート - とりあえずやってみた が詳しいです。スクリプトで書く時はrequireが便利だなと思いました。というよりパッケージの一覧を確認するlibrary()と分ける意味でも基本requireで良さそうです。

requireの結果をprint関数で表示してみると、パッケージが存在すればTRUEを、存在しなければFALSEを返していることがわかります。

> print(require("hoge"))
 要求されたパッケージ hoge をロード中です 
[1] FALSE
 警告メッセージ: 
 library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,: 
   ‘hoge’ という名前のパッケージはありません

次のようにパッケージがなければインストールするという事もできます。 参考サイト

if (!require("stringi")) {
  install.packages("stringi")
}

ちなみに読み込まなくてもパッケージ::関数のようにコロンを2つ記述することで使用できたりします。

> stringi::stri_install_check()

パッケージの一覧

library()でインストール済みパッケージの一覧が表示されます。

> library()
  パッケージ (ライブラリ ‘/Library/Frameworks/R.framework/Versions/3.2/Resources/library’ 中): 

base                           The R Base Package
boot                           Bootstrap Functions (Originally by Angelo Canty for S)
class                          Functions for Classification
cluster                        Cluster Analysis Extended Rousseeuw et al.
...

search()では現在読み込まれている(ロード済み)パッケージ一覧を表示します。searchpaths()は名前の通りですが読み込まれているパッケージのパスを表示します。

> search()
[1] ".GlobalEnv"        "package:ggplot2"   "tools:rstudio"     "package:stats"     "package:graphics" 
 [6] "package:grDevices" "package:utils"     "package:datasets"  "package:methods"   "Autoloads"        
[11] "package:base"
> searchpaths()
 [1] ".GlobalEnv"                                                              
 [2] "tools:rstudio"                                                           
 [3] "/Library/Frameworks/R.framework/Versions/3.2/Resources/library/stats"    
...
[10] "/Library/Frameworks/R.framework/Resources/library/base"

パッケージのアンロード

読み込んだパッケージはdetach(package)でアンロードします。package にはロード時と同じようにパッケージ名だけではなく、search()で表示される形式で指定してください。アンロードするとパッケージに含まれている関数は使用できなくなります。

> detach("package:ggplot2")

ヘルプ

パッケージや関数の使い方について不明な箇所はヘルプで確認します。

> help(package="パッケージ")   # パッケージのバージョンや著者などを確認
> vignette(package="パッケージ")   # パッケージの詳しい情報(無い場合もある)
> library(help="パッケージ")   # パッケージ情報
> ??パッケージ   # パッケージの関数を表示
> help("関数")   # 関数の使い方を表示
> ?関数   # 関数の使い方を表示
> args("関数")   # 関数の引数を表示
> example("関数")   # 関数のサンプルコードを実行。事前にパッケージのロードが必要。
> help.search("検索語")   # ヘルプの検索
> help.start()   # ヘルプドキュメントを開く