函数callmultmoments
计算正态分布的时刻。
如果权力的sume是奇数,则该函数自动打印"Sum of powers is odd. Moment is 0."
。有没有办法在原始功能不受影响的条件下压制它。
例如:
require(symmoments)
# Compute the moment for the 4-dimensional moment c(1,1,3,4):
m.1134 <- callmultmoments(c(1,1,3,4))
编辑:
正如here所述,我们可以使用
## Windows
sink("nul")
...
sink()
## UNIX
sink("/dev/null") # now suppresses
.... # do stuff
sink() # to undo prior suppression, back to normal now
但是,我正在编写一个包,所以我希望它与平台无关。任何想法改为做什么?
答案 0 :(得分:5)
问题是由于该函数有多个print
语句,其中stop
,warning
或message
是合适的,以便人们可以使用suppressWarnings
或suppressMessages
。
您可以使用invisible(capture.output())
解决问题。
f1 <- function(n, ...){
print("Random print statement")
cat("Random cat statement\n")
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
另见suppress messages displayed by "print" instead of "message" or "warning" in R。
答案 1 :(得分:0)
只需简单地避免出现不均匀的时刻,就可以消除来自callmultmoments的此消息。在您的示例中,任何奇数中心矩(例如c(1,1,3,4)
)在数学上的期望值为0。也就是说,诸如E[X^1 Y^1 Z^3 W^4]
之类的CENTRAL矩的期望值自动为0,其中幂之和(例如1 + 1 + 3 + 4)为奇数。