考虑以下函数
f1 <- function(x) {
# do something
x
}
f2 <- function(x) {
# do something
invisible(x)
}
假设我分别调用这两个函数并保存它们的值。
a <- f1(1)
b <- f2(2)
有没有办法知道 a
和 b
是否被隐形返回?
动机是我想创建一个函数,如果一个值被不可见地返回,该函数也想不可见地返回值。
最佳答案
有 withVisible
,它可以让你这样做:
> f3 = function(f, x){
v=withVisible(f(x))
if(v$visible){
return(v$value)
}else{
return(invisible(v$value))
}
}
> f3(f1,1)
[1] 1
> f3(f2,1)
一旦你有了 a
和 b
就没有办法了,因为 identical(a,b)
是 是的
。您只能在表达式上调用 withVisible
。除非发生了什么懒惰或 promise 。
关于r - 我怎么知道一个值是否被函数隐形返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867560/