簡體   English   中英

在 R 中禁止自動輸出到控制台

[英]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語句,其中stopwarningmessage是合適的,以便人們可以使用suppressWarnings warningsuppressMessages

您可以在整個作業中使用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

另請參閱抑制 R 中由“打印”而不是“消息”或“警告”顯示的消息

可以通過簡單地避免不均勻的時刻來抑制來自 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM