Wyłączanie wiadomości podczas ładowania pakietu

Mam pakiet W R (ROCR), który muszę załadować w moim środowisku R. Po załadowaniu paczki drukowany jest zestaw wiadomości. Jest to zwykle w porządku, ale ponieważ wyjście mojego skryptu R jest używane do dalszej analizy, chcę całkowicie wyłączyć to wyjście. Jak mam to zrobić? Co więcej, wolałbym to zrobić bez konieczności modyfikowania ROCR w ogóle, aby przyszli użytkownicy tego skryptu nie musieli tego robić.

Do tej pory:

  • sink() nie działa tutaj-przekierowanie zarówno stdout, jak i std err do /dev/null nic dla mnie nie robi.
  • nic dziwnego, options(warnings=-1) nie robi też nic, ponieważ nie są to Ostrzeżenia, same w sobie, drukowane.
Jakieś pomysły?
 67
Author: zx8754, 2011-12-30

4 answers

Po prostu użyj suppressMessages() wokół swojego library() wywołania:

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> 
 111
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-30 16:48:51

library(ROCR, quietly = TRUE) może być bardziej elegancka opcja.

 1
Author: Andrei Martins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-05 20:53:46

ODPOWIEDŹ Dirka wyłącza wszystkie wiadomości i nie jest specyficzna dla wiadomości generowanych podczas ładowania pakietów.

Rozwiązaniem jest:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

Nieco bardziej szczegółowe wyjaśnienie można znaleźć tutaj

 1
Author: Mehrad Mahmoudian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-16 07:32:41

Dodając quietly = T Jak pokazano poniżej rozwiążemy problem:

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

W przypadku opakowania wielokrotnego można użyć :

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

I używają lapply jak poniżej:

lapply(PKGs, library, character.only = TRUE ,quietly = T)
 0
Author: Yousef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-25 07:11:13