R中require()和library()的区别


require()library()函数都可以用来在R 中加载包,但它们有一个细微的区别:

  • 如果未安装软件包, require()会显示警告,然后继续执行代码。
  • Library()将抛出错误并停止代码执行。

由于这种差异,通常仅在将包加载到函数中时才使用require() ,以便即使包不存在该函数也能继续运行。

在实践中,大多数程序员建议使用library() ,因为您将希望收到一条错误消息,通知您未安装软件包。

这是您在编写代码时应该尽早意识到的事情。

下面的例子说明了require()library()函数在实践中的区别。

例子:R中require()和library()的区别

假设我们要从mlbench包加载BostonHousing数据集,但假设尚未安装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 环境中是否安装了特定的软件包。

例如,我们可以使用以下语法来检查当前R环境中是否安装了ggplot2包:

 #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 中的所有绘图

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注