加载包时禁用消息

lea*_*ner 81 r messages

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

至今:

  • sink()在这里不起作用 - 重定向stdout和std err /dev/null对我没有任何作用.
  • 不出所料,options(warnings=-1)也没有做任何事情,因为这些不是警告,本身就是印刷品.

有什么想法吗?

Dir*_*tel 132

只需使用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> 
Run Code Online (Sandbox Code Playgroud)

  • 你不应该使用`suppressPackageStartupMessages`吗? (15认同)
  • 除了花费更多X字符外,没有净收益.加上`suppressPackageStartupMessages`仅抑制_startup messages_,因为我首选的`suppressMessages()`抑制所有消息(但我记得不是`cat()`).但是不应该在启动文本中使用它. (9认同)
  • 德克的建议还可以在加载依赖包时抑制来自依赖包的消息,这也很棒。 (2认同)
  • 有没有办法捕获这些启动消息?我可以捕获警告和错误,但不知道如何捕获其他此类消息. (2认同)

Tim*_*and 21

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

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

suppressPackageStartupMessages(library(ggplot2))
Run Code Online (Sandbox Code Playgroud)

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

suppressPackageStartupMessages({
    library(ggplot2)
    library(ggdendro)
})
Run Code Online (Sandbox Code Playgroud)

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


Meh*_*ian 10

Dirk的答案会抑制所有消息,并不特定于加载包时生成的消息.

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

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))
Run Code Online (Sandbox Code Playgroud)

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