我在R(ROCR)中有一个包需要在我的R环境中加载。加载包后,将打印一组消息。这通常很好,但由于我的R脚本的输出用于进一步分析,我想完全禁用所有这些输出。我怎么做?此外,我更愿意这样做而不必修改ROCR,因此该脚本的未来用户也不必这样做。
到目前为止:
sink()
在这里不起作用 - 将stdout和std err重定向到/dev/null
对我没有任何作用。options(warnings=-1)
也没有做任何事情,因为这些警告本身并不是警告。有什么想法吗?
答案 0 :(得分:126)
只需在suppressMessages()
电话周围使用library()
:
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>
答案 1 :(得分:6)
Dirk's answer禁止显示所有消息,并且不特定于加载程序包时生成的消息。
更准确的解决方案是:
suppressPackageStartupMessages(library(THE_PACKAGE_NAME))
有更详细的解释
答案 2 :(得分:2)
library(ROCR, quietly = TRUE)
可能是一个更优雅的选择。
答案 3 :(得分:1)
使用preventPackageStartupMessages,请参阅@MehradMahmoudian的答案。为了完整起见,请添加用法示例:
对于一个库,请使用suppressPackageStartupMessages(...)
,例如:
suppressPackageStartupMessages(library(ggplot2))
对于多个库,请使用suppressPackageStartupMessages({...})
,例如:
suppressPackageStartupMessages({
library(ggplot2)
library(ggdendro)
})
答案 4 :(得分:0)
通过如下所示添加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)