我有一个R包(ROCR),需要在R环境中加载。装入包装后,将打印一组消息。通常,这很好,但是由于R脚本的输出正用于进一步分析,因此我想完全禁用所有这些输出。我怎么做?此外,我宁愿完全不必修改ROCR来执行此操作,这样该脚本的未来用户也不必这样做。
至今:
sink()在这里不起作用-将stdout和std err都重定向到/dev/null对我没有任何作用。- 毫不奇怪,它们
options(warnings=-1)什么也不做,因为这些本身并不是警告,而是要打印出来的。
有什么想法吗?
我有一个R包(ROCR),需要在R环境中加载。装入包装后,将打印一组消息。通常,这很好,但是由于R脚本的输出正用于进一步分析,因此我想完全禁用所有这些输出。我怎么做?此外,我宁愿完全不必修改ROCR来执行此操作,这样该脚本的未来用户也不必这样做。
至今:
sink()在这里不起作用-将stdout和std err都重定向到/dev/null对我没有任何作用。options(warnings=-1)什么也不做,因为这些本身并不是警告,而是要打印出来的。有什么想法吗?
Loading required package: gplots Loading required package: gtools Loading required package: gdata-请注意,它不会让我正确格式化消息。
Answers:
只需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>
suppressPackageStartupMessages吗?
suppressPackageStartupMessages仅抑制启动消息,而我首选suppressMessages()抑制任何和所有消息(但不cat()包括我记得的)。但是不应该在启动文本中使用它。
使用preventPackageStartupMessages,请参阅@MehradMahmoudian的答案。为了完整起见,请添加用法示例:
对于一个库,请使用suppressPackageStartupMessages(...),例如:
suppressPackageStartupMessages(library(ggplot2))
对于多个库,请使用suppressPackageStartupMessages({...}),例如:
suppressPackageStartupMessages({
library(ggplot2)
library(ggdendro)
})
library(ROCR, quietly = TRUE) 可能是一个更优雅的选择。
library(data.table, quietly = TRUE)