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


97

J'ai un package en R (ROCR) que je dois charger dans mon environnement R. Lors du chargement du package, un ensemble de messages est imprimé. C'est généralement 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ère le faire sans avoir à modifier du tout ROCR, afin que les futurs utilisateurs de ce script n'aient pas à le faire non plus.

Jusque là:

  • sink()ne fonctionne pas ici - rediriger à la fois stdout et std err vers /dev/nullne fait rien pour moi.
  • Sans surprise, options(warnings=-1)ne fait rien non plus, car ce ne sont pas des avertissements en soi imprimés.

Des pensées?


Quels messages sont imprimés?

1
Bien que la sortie entière ne soit pas nécessaire, les premières lignes sont: Loading required package: gplots Loading required package: gtools Loading required package: gdata- Notez que cela ne me permettra pas de formater le message correctement.
apprenant

Ensuite, chargez gplots, gtoolset gdataavant de charger ROCR.

2
@Jack, non, voir ma réponse ci-dessous pour la solution appropriée.
Dirk Eddelbuettel

6
Obligatoire "c'est un paquet, pas une bibliothèque" commenter ici
Spacedman

Réponses:


147

Utilisez simplement suppressMessages()autour de votre library()appel:

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
N'êtes-vous pas censé utiliser suppressPackageStartupMessages?
hadley

9
Aucun gain net à part dépenser X personnages supplémentaires. De plus, suppressPackageStartupMessagessupprime uniquement les messages de démarrage où, comme mon préféré, suppressMessages()supprime tous les messages (mais pas cat()comme je me souviens). Mais on n'est pas censé l'utiliser dans le texte de démarrage.
Dirk Eddelbuettel

1
C'est également formidable que la suggestion de Dirk supprime également les messages des packages dépendants lorsqu'ils sont chargés.
Matt Bannert

2
Existe-t-il un moyen de capturer ces messages de démarrage? Je peux capturer les avertissements et les erreurs, mais je ne sais pas comment capturer d'autres messages de ce type.
Adrian

1
@Adrian oui, enroulez-vous dans tryCatch et fournissez un gestionnaire de messages
jangorecki

20

La 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


10

Utilisez suppressPackageStartupMessages, voir la réponse de @MehradMahmoudian. Par souci d'exhaustivité, ajoutez des exemples d'utilisation:

Pour une bibliothèque, utilisez suppressPackageStartupMessages(...), par exemple:

suppressPackageStartupMessages(library(ggplot2))

Pour plusieurs bibliothèques, utilisez suppressPackageStartupMessages({...}), par exemple:

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


1

En ajoutant quietly = Tcomme indiqué ci-dessous, le problème sera résolu:

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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.