2011-12-30 6 views
59

У меня есть пакет в R (ROCR), который мне нужно загрузить в моей среде R. При загрузке пакета печатается набор сообщений. Это нормально, но поскольку вывод моего R-скрипта используется для дальнейшего анализа, я хочу полностью отключить весь этот вывод. Как мне это сделать? Кроме того, я бы предпочел сделать это без необходимости изменять ROCR вообще, чтобы будущие пользователи этого скрипта тоже этого не делали.Отключить сообщения при загрузке пакета

До сих пор:

  • sink() здесь не работает - перенаправлять как стандартный вывод и зЬй ERR к /dev/null ничего не делает для меня.
  • Неудивительно, что options(warnings=-1) ничего не делает, поскольку они не являются предупреждениями, как таковыми, для печати.

Любые мысли?

+0

Какие сообщения печатаются? –

+0

В то время как весь вывод не нужен, первые несколько строк: «Загрузка необходимого пакета: gplots Загрузка необходимой упаковки: gtools Загрузка необходимого пакета: gdata' - Обратите внимание, что это не позволит мне правильно отформатировать сообщение. – learner

+0

Затем загрузите 'gplots',' gtools' и 'gdata' перед загрузкой' ROCR'. –

ответ

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

+6

Нет чистого выигрыша, кроме расходов на X больше персонажей. Плюс 'suppressPackageStartupMessages' подавляет только _startup messages_, где, как я предпочитаю,' suppressMessages() 'подавляет все и все сообщения (но не' cat() ', как я помню). Но нельзя использовать это в стартовом тексте. –

+1

Также замечательно, что предложение Дирка подавляет сообщения от зависящих пакетов, когда они загружаются. –

Смежные вопросы