R语言 加载包时禁用消息

z6psavjg  于 2023-01-22  发布在  其他
关注(0)|答案(6)|浏览(146)

我有个包裹在R(ROCR),我需要在我的R环境中加载它。在加载包时,会打印一组消息。这通常是好的,但是由于我的R脚本的输出将用于进一步的分析,我想完全禁用所有这些输出。我该怎么做呢?此外,我更喜欢在根本不修改ROCR的情况下完成它。这样这个脚本的未来用户也不需要这样做。
到目前为止:

  • sink()在这里不起作用-将stdout和std err重定向到/dev/null对我没有任何作用。
  • 毫不奇怪,options(warnings=-1)也不做任何事情,因为它们本身并不是要打印的警告。

有什么想法吗?

368yc8dk

368yc8dk1#

只需在library()调用中使用suppressMessages()

edd@max:~$ R

R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)
[...]

R> suppressMessages(library(ROCR))
R>                                               # silently loaded
R> search() 
 [1] ".GlobalEnv"         "package:ROCR"         # it's really there      
 [3] "package:gplots"     "package:KernSmooth"
 [5] "package:grid"       "package:caTools"   
 [7] "package:bitops"     "package:gdata"     
 [9] "package:gtools"     "package:stats"     
[11] "package:graphics"   "package:grDevices" 
[13] "package:utils"      "package:datasets"  
[15] "package:methods"    "Autoloads"         
[17] "package:base"      
R>
olhwl3o2

olhwl3o22#

使用suppressPackageStartupMessages,请参阅 MehradMahmoudian 的答案。为完整起见,在此添加用法示例:
对于一个库,请使用suppressPackageStartupMessages(...),例如:

suppressPackageStartupMessages(library(ggplot2))

对于多个库,请使用suppressPackageStartupMessages({...}),例如:

suppressPackageStartupMessages({
    library(ggplot2)
    library(ggdendro)
})

另见:

Suppress package startup messages

2vuwiymt

2vuwiymt3#

Dirk's answer抑制所有消息,并且不特定于加载包时生成的消息。
对所问问题的更准确的解决方案是:

suppressPackageStartupMessages(library("THE_PACKAGE_NAME"))

可以在here中找到更详细的说明

ehxuflar

ehxuflar4#

library(ROCR, quietly = TRUE)可能是更优雅的选项。

rqcrx0a6

rqcrx0a65#

如果您使用for循环加载包,那么您必须像下面显示的那样使整个循环静默,而不是在单独加载库时抑制消息。

requiredPackages = c('plyr','dplyr','data.table')
suppressMessages(
 for (p in requiredPackages) {
  if (!require(p, character.only = TRUE)){
   install.packages(p)
  }
  library(p, character.only = TRUE)
 }
)
qvsjd97n

qvsjd97n6#

通过添加quietly = T(如下所示)将解决此问题:

suppressWarnings(suppressMessages(library("dplyr", quietly = T)))

如果有多个 Package ,您可以用途:

## specify the package names
PKGs <- c("affy","gcrma","readxl","ggplot2","lattice" )

它们使用lapply,如下所示:

lapply(PKGs, library, character.only = TRUE ,quietly = T)

相关问题