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.
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>
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.
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
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)
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