文書の過去の版を表示しています。
関数requireはパッケージが利用可能かどうかを確認して、利用可能なら読み込んでくれてTRUEを返し、利用可能でないならFALSEを返して終了する。 関数libraryはパッケージを読み込もうとしてくれて、成功すればそのまま終了し、失敗すればエラーを表示して処理を中断する。 関数install.packagesは、こちらが指定したパッケージをそれに付随するパッケージも含めてインストールしてくれる。
これを、現在使用しているRの状態に合わせて、読み込むだけだったり、インストールしてから読み込んでくれたりする関数を用意した。
#require.with.install.packages.if.necessary:
# リストで与えられたライブラリがインストール済みかどうかをチェックし、
# 必要ならインストールした上で、利用可能にする関数。
# この関数は理解しなくても大丈夫。
require.with.install.packages.if.necesarry = function(packages) {
require.2 = function(p) {
if( eval(parse(text = paste0("require(",p,")" ) ) ) ) {
cat(paste(p, "is loaded. \n"))
} else {
cat(paste("trying to install", p, "... \n"))
install.packages(p)
if( eval(parse(text = paste0("require(",p,")" ) ) ) ) {
cat(paste(p, "is loaded. \n"))
} else {
stop(paste(p, "could not be installed. \n"))
}
}
}
if(is.list(packages)) {
for( k in packages) {
require.2(k)
}
} else {
require.2(packages)
}
}
授業でRを用いる際に、パッケージのインストールや読み込みに関する質問が減ることが、このコードへの主な期待である。