[英]Suppress automatic output to console in R
函數callmultmoments
計算正態分布的矩。 該函數會自動打印"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))
編輯:
如此處所述,我們可以使用
## 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
warning
或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
可以通過簡單地避免不均勻的時刻來抑制來自 callmultmoments 的這條消息。 任何奇數中心矩,例如在您的示例中的c(1,1,3,4)
在數學上的預期值為 0。 也就是說,像E[X^1 Y^1 Z^3 W^4]
這樣的 CENTRAL 矩的期望值,其中冪的總和,例如 1+1+3+4,是奇數,自動為 0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.