抑制R中控制台的自动输出

抑制R中控制台的自动输出,r,output,R,Output,函数callmultmoments计算正态分布的矩。 如果幂和为奇数,该函数会自动打印“幂和为奇数。矩为0”。。在原函数保持不变的情况下,有没有办法抑制这种现象 例: 然而,我正在编写一个包,所以我希望它是独立于平台的。有什么想法可以替代吗?这个问题是因为该函数有多个打印语句,其中停止、警告、或消息,这样人们就可以使用抑制警告或抑制消息 您可以使用不可见(capture.output())在整个作业(而不仅仅是右侧)中解决此问题。 f1[1]“随机打印语句” #>随机cat语句 #> [1]

函数
callmultmoments
计算正态分布的矩。 如果幂和为奇数,该函数会自动打印“幂和为奇数。矩为0”。。在原函数保持不变的情况下,有没有办法抑制这种现象

例:


然而,我正在编写一个包,所以我希望它是独立于平台的。有什么想法可以替代吗?

这个问题是因为该函数有多个
打印
语句,其中
停止
警告
、或
消息
,这样人们就可以使用
抑制警告
抑制消息

您可以使用
不可见(capture.output())
在整个作业(而不仅仅是右侧)中解决此问题。

f1[1]“随机打印语句”
#>随机cat语句
#> [1] -0.1115004 -1.0830523
不可见(捕获.输出(x[1]0.0464493-0.1453540

另请参见。

通过简单地避免非偶数的力矩,可以抑制来自callmultmoments的消息。任何奇数中心力矩,如您的示例中的
c(1,1,3,4)
在数学上的预期值为0。也就是说,中心力矩的预期值,如
E[X^1 Y^1 Z^3 W^4]
,其中幂和,如1+1+3+4,自动为奇数。

可能
不可见
不可见不起作用。谢谢@hplieninger的回答。你能详细说明为什么我们需要
不可见(…)
关于
捕获.输出
调用?我在循环中尝试过,没有明显的区别。只是想弄清楚他们在做什么,
文件在这种情况下不清楚。谢谢。老实说,我不知道。这是一个黑客,很可能是我从链接的线程。但是如果没有
invisible()
,上面的
print()
cat()
语句将不会被抑制。嗯,这就是我问的原因;在我的循环中
print()
cat()不管我是否使用<代码>不可见< /代码>,被禁止。是的,我知道这一点。但是在我的函数中,许多时刻被计算出来,如果它们是偶数或奇数,我事先不知道。如果你有机会去更新包,考虑一下改变警告的方式。“是使用warning()从打印语句生成为正确的警告语句。这样做更容易。谢谢。我会记住这一点,尽管目前我没有修订计划。
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