R の require() と library() の違い
require()関数とlibrary()関数はどちらも R でパッケージをロードするために使用できますが、微妙な違いがあります。
- require() は、パッケージがインストールされていない場合に警告を表示し、コードの実行を続行します。
- library()はエラーをスローし、コードの実行を停止します。
この違いのため、 require()は通常、パッケージが存在しない場合でも関数が実行し続けるように、パッケージを関数にロードする場合にのみ使用されます。
実際には、パッケージがインストールされていないことを通知するエラー メッセージを受け取る必要があるため、ほとんどのプログラマはlibrary()の使用を推奨します。
これは、コードを作成するときにできるだけ早い段階で認識する必要があることです。
次の例は、実際のrequire()関数とlibrary()関数の違いを示しています。
例: R の require() と library() の違い
BostonHousingデータセットをmlbenchパッケージからロードしたいとしますが、 mlbenchパッケージがまだインストールされていないと仮定します。
次のコードは、 library()関数を使用して、このパッケージを読み込み、 BostonHousingデータセットでデータ分析を実行する方法を示しています。
#attempt to load mlbench library library (mlbench) Error in library(mlbench): there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) #view summary of Boston Housing dataset summary(BostonHousing) #view total number of rows in Boston Housing dataset nrow(BostonHousing)
mlbenchパッケージがまだインストールされていないため、 library()関数を使用するとエラーが発生し、残りのコードは実行されません。
これは、このパッケージがインストールされていないこと、続行する前にインストールする必要があることをすぐに知らせてくれるので便利です。
ただし、代わりにrequire()を使用してmlbenchパッケージをロードするとします。
#attempt to load mlbench library require (mlbench) Warning message: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) Warning message: In data(BostonHousing) : data set 'BostonHousing' not found #view summary of Boston Housing dataset summary(BostonHousing) Error in summary(BostonHousing): object 'BostonHousing' not found #view total number of rows in Boston Housing dataset nrow(BostonHousing)
この例では、 summary()関数を使用してBostonHousingデータセットを要約しようとするまで、エラー メッセージは表示されません。
代わりに、 require()関数の使用後に警告が表示され、コードの残りの部分はエラーが発生するまで実行され続けます。
この例は、R のlibrary()とrequire()の違いを示しています。 library()関数はすぐにエラーを生成し、 mlbenchがロードされていないため、残りのコードは実行されません。
このため、ほとんどのシナリオでは、パッケージをロードするときにlibrary()関数を使用する必要があります。
ボーナス: 特定のパッケージがインストールされているかどうかを確認します
system.file()関数を使用すると、現在の R 環境に特定のパッケージがインストールされているかどうかを確認できます。
たとえば、次の構文を使用して、 ggplot2パッケージが現在の R 環境にインストールされているかどうかを確認できます。
#check if ggplot2 is installed system. file (package=' ggplot2 ') [1] "C:/Users/bob/Documents/R/win-library/4.0/ggplot2"
ggplot2 がインストールされているため、この関数は単にパッケージがインストールされているファイル パスを返します。
ここで、 mlbenchパッケージがインストールされているかどうかを確認するとします。
#check if mlbench is installed system. file (package=' mlbench ') [1] ""
この関数は空の文字列を返します。これは、 mlbenchパッケージが現在の環境にインストールされていないことを示します。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。