114

我在 R (ROCR) 中有一个包,需要在我的 R 环境中加载。加载包后,会打印一组消息。这通常很好,但由于我的 R 脚本的输出被用于进一步分析,我想完全禁用所有这些输出。我怎么做?此外,我更愿意在完全不必修改 ROCR 的情况下执行此操作,以便该脚本的未来用户也不必这样做。

至今:

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

有什么想法吗?

4

5 回答 5

165

只需suppressMessages()在您的library()通话中使用:

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> 
于 2011-12-30T16:48:51.117 回答
29

Dirk 的回答抑制了所有消息,并且不特定于加载包时生成的消息。

对所提问题的更准确的解决方案是:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

可以在这里找到更详细的解释

于 2018-07-16T07:32:41.523 回答
27

使用suppressPackageStartupMessages,请参阅MehradMahmoudian的答案。为了完整起见,在此处添加使用示例:

对于一个库,使用suppressPackageStartupMessages(...),例如:

suppressPackageStartupMessages(library(ggplot2))

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

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

还请参见:
抑制包启动消息

于 2019-11-13T19:09:24.480 回答
3

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

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

如果有多个包,您可以使用:

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

他们使用 lapply 如下:

lapply(PKGs, library, character.only = TRUE ,quietly = T)
于 2018-09-25T06:46:02.847 回答
3

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

于 2018-05-05T20:53:46.613 回答