2011-12-30 83 views
59

我在R(ROCR)中有一个包,需要在我的R环境中加载。在加载软件包时,会打印一组消息。这通常很好,但由于我的R脚本的输出被用于进一步分析,我想完全禁用所有这些输出。我怎么做?此外,我宁愿不做任何修改ROCR,这样脚本的未来用户也不必这样做。加载包时禁用消息

到目前为止:

  • sink()不在这里工作了 - stdout和性病ERR重定向到/dev/null什么都不给我。
  • 不出所料,options(warnings=-1)也没有做任何事情,因为这些都不是警告,本身,正在打印。

有什么想法?

+0

正在打印什么信息? – 2011-12-30 16:42:50

+0

虽然整个输出是不必要的,但前几行是:'加载所需包:gplots 加载所需包:gtools 加载所需包:gdata' - 请注意,它不会让我正确格式化消息。 – learner 2011-12-30 16:52:35

+0

然后在加载'ROCR'之前加载'gplots','gtools'和'gdata'。 – 2011-12-30 16:58:08

回答

96

只需使用suppressMessages()在你library()电话:

[email protected]:~$ 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> 
+6

是不是你应该使用'suppressPackageStartupMessages'? – hadley 2011-12-31 00:24:31

+6

除了花费更多的字符之外,没有净收益。加上'suppressPackageStartupMessages'只能抑制_startup messages_,因为我记得我的首选'suppressMessages()'会压制任何和所有消息(但不是'cat()')。但一个不应该在启动文本中使用它。 – 2011-12-31 00:36:58

+1

Dirk的建议抑制依赖包中的消息以及加载时的消息也很棒。 – 2016-05-12 15:24:51