如何在不使用 print() 的情况下打印函数的结果?

How to print the result of a function without using print ()?

我需要在我的包的函数中打印 Tukey 测试结果。但是CRAN回复说我不能用print()/cat()。如果我用message(), message 出来的不是我想要的格式,如print()。

res.aov <- aov(y ~ x, data= data)
  tukey<-TukeyHSD(res.aov)

print(tukey$`x[, 1]`)

用print(),结果如我所愿地出现在控制台上:

         diff         lwr        upr      p adj
2-1 0.0188276 0.003123183 0.03453202 0.01922062

但是用message(),结果是这样的:

0.01882759965134230.003123182712210140.03453201659047440.0192206190347084

对于像 print () 那样输出结果有什么建议吗?谢谢

您可以使用 capture.output() 函数将打印函数的所需结果保存到变量中。然后您正确格式化字符串并将其传递给 message()。请参阅以下示例:

> x <- c(a = 1, b = 2)
> print(x)
# a b 
# 1 2 
> msg <- capture.output(print(x))
> message(paste(msg, collapse = "\n"))
# a b 
# 1 2