R:当用户将函数的输出分配给变量时,如何抑制打印输出?

R: How to suppress print output when the user assigns output of your function to a variable?

提问人:pomodoro 提问时间:10/21/2019 更新时间:10/21/2019 访问量:522

问:

背景

该函数返回打印输出,如下所示:t.test()

set.seed(2)
dat = rnorm(n = 50, mean = 0, sd = 1)
t.test(x = dat, mu = 0)

    One Sample t-test

data:  dat
t = 0.43276, df = 49, p-value = 0.6671
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.2519143  0.3901901
sample estimates:
 mean of x 
0.06913791 

当用户将此函数的输出分配给变量时,打印输出将被禁止:

a = t.test(x = dat, mu = 0)

我不确定这是如何实现的。在我自己的函数中,我有一个发生在 .玩具示例:message()return()

toy <- function(i){

  if(i > 0){

    message("i is greater than 0")

  }

  return(i)

}

目前,我为用户提供了一个选项,可以将参数设置为 or,以便使用语句抑制打印输出。silentTRUEFALSEif()

问题

当用户将函数输出分配给变量时,有没有办法自动抑制函数的消息/打印输出?

R 函数 打印 SuppressMessage

评论

0赞 Artur_Indio 10/21/2019
类似
0赞 Gray 10/21/2019
invisible() 函数将在许多情况下禁止打印,其中输出是不需要或不需要的。
0赞 r2evans 10/21/2019
在第一个示例中,花哨的输出显示在控制台上的原因与为什么显示在控制台上类似,但事实并非如此。一般来说,赋值操作在技术上确实会返回赋值作为整体运算的结果(这就是工作的原因),但它是不可见地返回的(如@Gray所述),这意味着它的方法(或者,如果没有)在赋值时没有被调用,而是在赋值时被调用。(您可以通过将其包裹在 parens 中来防止,因此将在控制台上打印。t.test1+12x = 1+1a <- b <- 1printprint.defaultinvisible(x = 1+1)2

答: 暂无答案