函数callmultmoments
计算正态分布的矩。该函数会自动打印"Sum of powers is odd. Moment is 0."
如果幂的 sume 是奇数。在原始功能保持不变的情况下,有没有办法抑制它。
前任:
require(symmoments)
# Compute the moment for the 4-dimensional moment c(1,1,3,4):
m.1134 <- callmultmoments(c(1,1,3,4))
编辑:
如此处所述,我们可以使用
## Windows
sink("nul")
...
sink()
## UNIX
sink("/dev/null") # now suppresses
.... # do stuff
sink() # to undo prior suppression, back to normal now
但是,我正在编写一个包,所以我希望它是独立于平台的。有什么想法吗?
这个问题是由于该函数有多个print
语句,其中stop
、warning
或message
是合适的,以便人们可以使用suppressWarnings
或suppressMessages
。
你可以在整个作业(不仅仅是右侧(周围使用invisible(capture.output())
来工作。
f1 <- function(n, ...){
print("Random print statement")
cat("Random cat statementn")
rnorm(n = n, ...)
}
f1(2)
#> [1] "Random print statement"
#> Random cat statement
#> [1] -0.1115004 -1.0830523
invisible(capture.output(x <- f1(2)))
x
#> [1] 0.0464493 -0.1453540
另请参阅禁止显示 R 中的"打印"而不是"消息"或"警告"的消息。
如果您正在使用的函数Barnard::barnard.test
以下工作:
invisible(capture.output(abc <- barnard.test(8,14,1,3)))
但是,如果您只使用invisible
或仅使用capture.output
功能,则仍然具有不需要的打印。
警告:如果您按照我建议的方式进行操作,以后不要打印abc
。 你会得到很多你不想要的东西。 相反,只需抓住您真正想要的部分,例如 abc$p.value
.
可以通过简单地避免一个不均匀的时刻来抑制来自callmultmoments的消息。任何奇数中心矩(例如示例中的c(1,1,3,4)
(在数学上的期望值为 0。也就是说,CENTRAL 矩(例如 E[X^1 Y^1 Z^3 W^4]
(的期望值,其中幂的总和(例如 1+1+3+4(为奇数,自动为 0。