在R中加载程序包时如何停止打印消息?

在R中加载程序包时会收到一些烦人的消息,这些消息直到并且除非我们不加载新程序包时才有用。由于这些消息看起来像输出,因此它们可能会造成混淆,尤其是在我们分析字符串数据时。因此,我们必须摆脱它们。

加载BSDA软件包时的消息示例:

> library(BSDA)

加载所需的包裹-晶格

附件包-'BSDA'

以下对象被'package:datasets'屏蔽-

Orange

在这里,在加载BSDA软件包时,我们会收到一些消息,但是如果确定该软件包已安装在R中并且正确加载,则可能对这些消息不感兴趣。另外,如果经常使用软件包,那么这些消息很烦人,我们希望摆脱它们。因此,有一个简单的解决方案,我们可以在加载程序包时使用preventPackageStartupMessages。

示例

> suppressPackageStartupMessages(library(BSDA))

当我们使用preventPackageStartupMessages函数时,如果该软件包安装在R中,则它将禁用在加载软件包时获得的所有消息,但不会对错误或警告产生影响。

示例

> suppressPackageStartupMessages(library(ROCR))
Error in library(ROCR) : there is no package called ‘ROCR’

由于我的R版本中未安装ROCR软件包,因此preventPackageStartupMessages函数会引发错误。

> suppressPackageStartupMessages(library(data.table))
Warning message:
package ‘data.table’ was built under R version 3.6.2

现在,我确实安装了data.table软件包,但是它是在3.6.2版下构建的,因此它显示警告消息,因为用于此目的的RI版本是3.6.1。

让我们再看一个例子。假设我们要加载带有许多消息的gdata包,如下所示-

> library(gdata)
gdata: Unable to locate valid perl interpreter
gdata:
gdata: read.xls() will be unable to read Excel XLS and XLSX files
gdata: unless the 'perl=' argument is used to specify the location of a
gdata: valid perl intrpreter.
gdata:
gdata: (To avoid display of this message in the future, please ensure
gdata: perl is installed and available on the executable search path.)
gdata: Unable to load perl libaries needed by read.xls()
gdata: to support 'XLX' (Excel 97-2004) files.
gdata: Unable to load perl libaries needed by read.xls()
gdata: to support 'XLSX' (Excel 2007+) files.
gdata: Run the function 'installXLSXsupport()'
gdata: to automatically download and install the perl
gdata: libaries needed to support Excel XLS and XLSX formats.
Attaching package: ‘gdata’

以下对象被'package:purrr'屏蔽-

keep

以下对象被'package:data.table'屏蔽-

first, last

以下对象被'package:stats'屏蔽-

nobs

以下对象被'package:utils'屏蔽-

object.size

以下对象被'package:base'屏蔽-

startsWith

现在我们可以轻松地忽略这些消息,如下所示:

> suppressPackageStartupMessages(library(gdata))

但是,如果我们安装了新软件包,则我们不能忽略这些消息,因为当我们不熟悉该软件包时,可能会对我们有用。