web-dev-qa-db-fra.com

Désactiver les messages lors du chargement d'un package

J'ai un package en R (ROCR) que je dois charger dans mon environnement R. Lors du chargement du colis, un ensemble de messages est imprimé. C'est normalement bien, mais comme la sortie de mon script R est utilisée pour une analyse plus approfondie, je veux désactiver complètement toute cette sortie. Comment je fais ça? De plus, je préférerais le faire sans avoir à modifier ROCR du tout, afin que les futurs utilisateurs de ce script n'aient pas à le faire non plus.

Jusque là:

  • sink() ne fonctionne pas ici - rediriger stdout et std err vers /dev/null ne fait rien pour moi.
  • Sans surprise, options(warnings=-1) ne fait rien non plus, car ce ne sont pas des avertissements, en soi, en cours d'impression.

Des pensées?

80
learner

Utilisez simplement suppressMessages() autour de votre appel 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 Eddelbuettel

réponse de Dirk supprime tous les messages et n'est pas spécifique aux messages générés lors du chargement des packages.

La solution la plus précise à la question posée est:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

Une explication un peu plus détaillée peut être trouvée ici

7
Mehrad Mahmoudian

library(ROCR, quietly = TRUE) pourrait être une option plus élégante.

1
Andrei Martins

En ajoutant quietly = T comme indiqué ci-dessous résoudra le problème:

suppressWarnings(suppressMessages(library("dplyr", quietly = T)))

En cas de package multiple, vous pouvez utiliser:

## specify the package names
PKGs <- c("affy","gcrma","readxl","ggplot2","lattice" )

et ils utilisent lapply comme ci-dessous:

lapply(PKGs, library, character.only = TRUE ,quietly = T)
0
Yousef