禁止来自compute.es函数的所有输出

时间:2014-09-15 21:51:52

标签: r

我正在使用compute.es包(http://cran.r-project.org/web/packages/compute.es/compute.es.pdf)来计算效果大小。现在,当使用这个包中的一个函数时,即使你将它分配给一个向量,也会打印结果,我想要压制它。

例如,

library("compute.es")
mes(5,5,5,5,5,5,level=95,dig=2,id=NULL,data=NULL)

打印了很多信息。通过capture.output这样使用

library("compute.es")
capture.output(mes(5,5,5,5,5,5,level=95,dig=2,id=NULL,data=NULL))

很多都被压制了,但不是全部。我对sink()(打破整个功能)或invisible()也没有好运。

如何禁止此功能的所有打印信息?

2 个答案:

答案 0 :(得分:3)

这个功能真的是双极的。有些内容使用cat打印,其他内容使用message打印。除了您尝试过的内容之外,您还可以尝试suppressMessages

这对我有用。

x <- capture.output(suppressMessages(mes(5,5,5,5,5,5,level=95,dig=2,id=NULL,data=NULL)))

或者,您可以破解该功能(使用源代码!)并删除所有catmessage语句。另一种方法是向函数添加另一个参数(如verbose),并通过将消息放入if子句中来打开/关闭消息。 E.g。

if (!is.null(data)) {
  if (verbose) {
    cat("\n")
    message("    EFFECT SIZE CALCULATION (FOR VECTOR INPUT)")
    cat("\n")
  }
...

答案 1 :(得分:3)

compute.es包的0.2-4版本有一个'详细'参数,例如:

require(compute.es) # VERSION => 0.2-4

des(.3, 30, 30, verbose=FALSE)  # WILL SUPPRESS PRINTING TO CONSOLE