Отключить сообщения при загрузке пакета
У меня есть пакет в R (ROCR), который мне нужно загрузить в моей среде R. При загрузке пакета печатается набор сообщений. Это нормально, но поскольку вывод моего R script используется для дальнейшего анализа, я хочу полностью отключить весь этот вывод. Как мне это сделать? Более того, я бы предпочел сделать это без необходимости изменять ROCR вообще, так что будущим пользователям этого script тоже не нужно это делать.
До сих пор:
-
sink()
здесь не работает - перенаправление как stdout, так и std err на /dev/null
ничего не делает для меня.
- Неудивительно, что
options(warnings=-1)
ничего не делает, так как это не предупреждения, как таковые, печатаются.
Любые мысли?
Ответы
Ответ 1
Просто используйте suppressMessages()
вокруг вашего вызова 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 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>
Ответ 2
Dirk answer подавляет все сообщения и не относится к сообщениям, генерируемым при загрузке пакетов.
Более точное решение заданного вопроса:
suppressPackageStartupMessages(library(THE_PACKAGE_NAME))
Чуть более подробное объяснение можно найти здесь
Ответ 3
library(ROCR, quietly = TRUE)
может быть более элегантным вариантом.
Ответ 4
Добавление quietly = T
как показано ниже, решит проблему:
suppressWarnings(suppressMessages(library("dplyr", quietly = T)))
В случае нескольких пакетов вы можете использовать:
## specify the package names
PKGs <- c("affy","gcrma","readxl","ggplot2","lattice" )
и они используют lapply, как показано ниже:
lapply(PKGs, library, character.only = TRUE ,quietly = T)