2011-12-30 11 views
59

Tengo un paquete en R (ROCR) que necesito cargar en mi entorno R. Al cargar el paquete, se imprime un conjunto de mensajes. Esto es ordinariamente correcto, pero como el resultado de mi secuencia de comandos R se está utilizando para un análisis posterior, quiero deshabilitar completamente todo este resultado. ¿Cómo puedo hacer eso? Además, preferiría hacerlo sin tener que modificar ROCR para que los futuros usuarios de este script tampoco tengan que hacer eso.Deshabilitar mensajes al cargar un paquete

Hasta ahora:

  • sink() no funciona aquí - redireccionar tanto stdout y err std a /dev/null no hace nada para mí.
  • Como era de esperar, options(warnings=-1) tampoco hace nada, ya que estas advertencias no se están imprimiendo per se.

¿Alguna idea?

+0

¿Qué mensajes se están imprimiendo? –

+0

Si bien la salida completa es innecesaria, las primeras líneas son: 'Cargando el paquete requerido: gplots Cargando el paquete requerido: gtools Cargando el paquete requerido: gdata' - Tenga en cuenta que no me permitirá formatear el mensaje correctamente. – learner

+0

Luego carga 'gplots',' gtools', y 'gdata' antes de cargar' ROCR'. –

Respuesta

96

Sólo tiene que utilizar suppressMessages() alrededor de su llamada library():

[email protected]:~$ 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> 
+6

¿No se supone que debe usar 'suprimirPaquetesManagementMessages'? – hadley

+6

Sin ganancia neta aparte de gastar X más caracteres. Además, 'suprimirPaqueteStartupMessages' suprime solo _startup messages_ donde como mi preferido' suprimirMensajes() 'suprime todos y cada uno de los mensajes (pero no' cat() 'como recuerdo). Pero se supone que uno no debe usar eso en el texto de inicio. –

+1

También es genial que la sugerencia de Dirk suprima mensajes de paquetes dependientes también cuando se cargan. –

Cuestiones relacionadas