我看到还有另一个相关问题,但答案不是我要找的.我想要一个可以分配给一个对象的函数,但是即使在分配时仍然会打印输出,但不能双重打印它.
在这种情况下:
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上进行双重打印?
假设您仍希望函数返回'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'值.