保存到变量时隐藏输出

时间:2015-12-27 16:04:06

标签: r printing

我想在保存自己的功能输出时隐藏打印输出。

f2 <- function(x) {
  cat("x + 5 = ", x + 5)
  invisible(x + 5)
}
f2(1)       # prints
a <- f2(1)  # also prints

换句话说,我想让我的功能打印

x + 5 = 6

调用f2(1)但是在调用a <- f2(1)的情况下我不想显示任何打印输出。有什么简单的方法可以做到吗?

1 个答案:

答案 0 :(得分:2)

您可以使用类系统。这是一个简单的S3示例:

f2 <- function(x) {
          names(x) <- paste(x, "+ 5")
          class(x) <- c(class(x), 'foo')
          x + 5
       }

print.foo <- function(x) { cat(names(x), "=", x)}

在实践中:

> x <- 3
> f2(x)
3 + 5 = 8
> y <- f2(x)
> 

请注意,print.foo函数不处理长度为&gt;的向量。 1优雅。如果需要,可以修复。