我想在保存自己的功能输出时隐藏打印输出。
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)
的情况下我不想显示任何打印输出。有什么简单的方法可以做到吗?
答案 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优雅。如果需要,可以修复。