Mam pakiet w R (ROCR), który muszę załadować w moim środowisku R. Po załadowaniu paczki drukowany jest zestaw komunikatów. Zwykle jest to w porządku, ale ponieważ wynik mojego skryptu R jest używany do dalszej analizy, chcę całkowicie wyłączyć wszystkie te dane wyjściowe. Jak mogę to zrobić? Ponadto wolałbym to zrobić bez konieczności modyfikowania ROCR w ogóle, aby przyszli użytkownicy tego skryptu również nie musieli tego robić.
Jak dotąd:
sink()
nie działa tutaj - przekierowanie zarówno stdout, jak i std err na/dev/null
nic nie robi.- Nic dziwnego,
options(warnings=-1)
że również nic nie robi, ponieważ nie są to same ostrzeżenia, które są drukowane.
jakieś pomysły?
Loading required package: gplots Loading required package: gtools Loading required package: gdata
- Zauważ, że nie pozwoli mi to poprawnie sformatować wiadomości.gplots
,gtools
igdata
przed załadowaniemROCR
.Odpowiedzi:
Po prostu użyj
suppressMessages()
wokół swojegolibrary()
połączenia: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>
źródło
suppressPackageStartupMessages
?suppressPackageStartupMessages
pomija tylko wiadomości startowe, gdzie jako preferowanesuppressMessages()
pomija wszystkie wiadomości (ale niecat()
tak, jak pamiętam). Ale nie należy tego używać w tekście startowym.Odpowiedź Dirka blokuje wszystkie wiadomości i nie jest specyficzna dla wiadomości generowanych podczas ładowania pakietów.
Bardziej trafnym rozwiązaniem postawionego pytania jest:
suppressPackageStartupMessages(library(THE_PACKAGE_NAME))
Nieco bardziej szczegółowe wyjaśnienie można znaleźć tutaj
źródło
Użyj suppressPackageStartupMessages, zobacz odpowiedź @MehradMahmoudian. Dla kompletności, dodaj przykłady użycia:
Dla jednej biblioteki użyj
suppressPackageStartupMessages(...)
na przykład:suppressPackageStartupMessages(library(ggplot2))
W przypadku wielu bibliotek użyj
suppressPackageStartupMessages({...})
na przykład:suppressPackageStartupMessages({ library(ggplot2) library(ggdendro) })
źródło
library(ROCR, quietly = TRUE)
może być bardziej elegancką opcją.źródło
library(data.table, quietly = TRUE)
Dodanie,
quietly = T
jak pokazano poniżej, rozwiąże problem:suppressWarnings(suppressMessages(library("dplyr", quietly = T)))
W przypadku pakietów wielokrotnych można skorzystać z:
## 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)
źródło