R功能 - 未指定时打印

Nat*_*son 3 r function

我看到还有另一个相关问题,但答案不是我要找的.我想要一个可以分配给一个对象的函数,但是即使在分配时仍然会打印输出,但不能双重打印它.

在这种情况下:

fun <- function(x) {
print(x+1)
x+1
}
a <- fun(3)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它将保存到a,它将打印到控制台,这是我想要的.

但在这种情况下:

fun(3)
Run Code Online (Sandbox Code Playgroud)

它会打印到控制台两次.有没有办法从案例1中获得所需的结果,而不需要在案例2上进行双重打印?

Bou*_*man 5

假设您仍希望函数返回'x + 1'值,您可以将其包装在不可见函数中:

fun <- function(x) {
  print(x+1)
  invisible(x+1)
}

> fun(3)
[1] 4

> a = fun(3)
[1] 4

> a
[1] 4
Run Code Online (Sandbox Code Playgroud)

这只会打印一次,同时仍然保留'x + 1'值.