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 で他の一般的なタスクを実行する方法について説明します。

Rで複数のパッケージをロードする方法
Rで環境をクリアする方法
RStudio ですべてのプロットをクリアする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です