パッケージのロード時にメッセージを無効にする


98

私のR環境にロードする必要があるR(ROCR)のパッケージがあります。パッケージをロードすると、一連のメッセージが出力されます。これは通常は問題ありませんが、Rスクリプトの出力はさらに分析するために使用されているため、この出力をすべて完全に無効にしたいと思います。それ、どうやったら出来るの?さらに、ROCRをまったく変更せずにそれを実行したいので、このスクリプトの将来のユーザーもそれを実行する必要はありません。

これまでのところ:

  • sink()ここでは機能しません-stdoutとstd errの両方をリダイレクトし/dev/nullても何も起こりません。
  • 当然のことながら、options(warnings=-1)これらは警告そのものではないため、何も実行されません。

何かご意見は?


どのメッセージが出力されますか?

1
出力全体は不要ですが、最初の数行は次のとおり Loading required package: gplots Loading required package: gtools Loading required package: gdataです。-メッセージを正しくフォーマットできないことに注意してください。
学習者、

その後、負荷gplotsgtoolsおよびgdata負荷前ROCR

2
@ジャック、いや、適切な修正については、以下の私の答えを参照してください。
Dirk Eddelbuettel、2011

6
ここでは義務的な「ライブラリではなくパッケージ」というコメント
Spacedman '30 / 12/30

回答:


148

通話の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> 

19
使うつもりじゃないのsuppressPackageStartupMessages
ハドリー、2011

9
X文字を費やす以外に純利益はありません。プラスsuppressPackageStartupMessagesスタートアップメッセージのみを抑制しますが、私の好みのsuppressMessages()ように、すべてのメッセージを抑制します(ただし、cat()覚えていません)。しかし、これをスタートアップテキストで使用することはできません。
Dirk Eddelbuettel、2011

1
また、Dirkの提案により、パッケージが読み込まれているときに、依存パッケージからのメッセージも抑制されることも素晴らしいことです。
Matt Bannert、2016年

2
これらの起動メッセージをキャプチャする方法はありますか?警告とエラーをキャプチャできますが、他のそのようなメッセージをキャプチャする方法がわかりません。
エイドリアン

1
@Adrianはい、あります。tryCatchにラップしてメッセージハンドラを提供します
jangorecki


12

suppressPackageStartupMessagesを使用します。@ MehradMahmoudianによる回答を参照してください。完全を期すため、使用例を追加します。

1つのライブラリの場合はsuppressPackageStartupMessages(...)、たとえば、次のように使用します。

suppressPackageStartupMessages(library(ggplot2))

複数のライブラリの場合はsuppressPackageStartupMessages({...})、たとえば次のように使用します。

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


1

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.