web-dev-qa-db-ja.com

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

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

これまでのところ:

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

何かご意見は?

80
learner

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> 
131

Dirk's answer はすべてのメッセージを抑制し、パッケージのロード中に生成されるメッセージに固有ではありません。

質問に対するより正確な解決策は次のとおりです。

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

もう少し詳細な説明があります こちら

7

library(ROCR, quietly = TRUE)はよりエレガントなオプションかもしれません。

1
Andrei Martins

以下に示すように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)
0
Yousef