124 votes

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

J'ai un paquetage dans R (ROCR) que je dois charger dans mon environnement R. Lors du chargement du package, une série de messages est imprimée. C'est normalement une bonne chose, mais comme la sortie de mon script R est utilisée pour une analyse ultérieure, je souhaite désactiver complètement cette sortie. Comment faire ? 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.

Jusqu'à présent :

  • sink() ne fonctionne pas ici - redirigeant à la fois stdout et std err vers /dev/null ne m'apporte rien.
  • Sans surprise, options(warnings=-1) ne fait rien non plus, puisque ce ne sont pas des avertissements en tant que tels qui sont imprimés.

Qu'en pensez-vous ?

179voto

Dirk Eddelbuettel Points 134700

Il suffit d'utiliser 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>

37voto

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

La solution la plus exacte à la question posée est la suivante :

suppressPackageStartupMessages(library("THE_PACKAGE_NAME"))

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

34voto

Timur Shtatland Points 7599

Utilisation suppressPackageStartupMessages voir la réponse de MehradMahmoudian . Par souci d'exhaustivité, nous ajoutons ici 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)
})

VOIR AUSSI :
Supprimer les messages de démarrage des paquets

3voto

Andrei Martins Points 37

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

2voto

Vicky Ruiz Points 63

Si vous chargez des paquets avec une boucle for, vous devez alors taire la boucle complète comme je le montre ci-dessous au lieu de supprimer le message lorsque vous chargez la bibliothèque individuellement.

requiredPackages = c('plyr','dplyr','data.table')
suppressMessages(
 for (p in requiredPackages) {
  if (!require(p, character.only = TRUE)){
   install.packages(p)
  }
  library(p, character.only = TRUE)
 }
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X