R(パッケージ)

2023年12月23日 (土)

[R]パッケージの関数を使う

「::」を使って、「(パッケージ)::(関数)」と表記することで使うことができる。以下は、MASSパッケージに含まれるムーア・ペンローズ一般逆行列を求めるginv関数を使用した例。MASSパッケージはRに標準で搭載されているが、起動時には自動で読み込まれないため、読み込まないと使うことはできない。

> mx <- matrix(1:4, 2, 2)
> ginv(mx)
ginv(mx) でエラー: 関数 "ginv" を見つけることができませんでした
> MASS::ginv(mx)
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5

library関数を使ってパッケージをメモリに読み込むことで、パッケージ名を指定しなくても使うことができるようになる。読み込んだパッケージはdetach関数を使うことでメモリから解放することができる。detach関数でパッケージの指定をする際は「package:(パッケージ名)」とする。

> library(MASS)
> ginv(mx)
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
> head(survey, 3)
Sex Wr.Hnd NW.Hnd W.Hnd Fold Pulse Clap Exer Smoke Height M.I Age
1 Female 18.5 18.0 Right R on L 92 Left Some Never 173.0 Metric 18.250
2 Male 19.5 20.5 Left R on L 104 Left None Regul 177.8 Imperial 17.583
3 Male 18.0 13.3 Right L on R 87 Neither None Occas NA 16.917
> detach(package:MASS)
> ginv(mx)
ginv(mx) でエラー: 関数 "ginv" を見つけることができませんでした
> head(survey)
エラー: オブジェクト 'survey' がありません

library関数の代わりにrequire関数も使うことができる。library関数は読み込みに失敗するとエラーが発生するが、require関数は読み込みに成功するとTRUE、失敗するとFALSEと返して警告が発生する。quietlyオプションにTRUEを与えると、警告は発生しなくなる。

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