2011-12-30 53 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