r - 我怎么知道一个值是否被函数隐形返回?

标签 r

考虑以下函数

f1 <- function(x) {
  # do something
  x
}

f2 <- function(x) {
  # do something
  invisible(x)
}

假设我分别调用这两个函数并保存它们的值。

a <- f1(1)
b <- f2(2)

有没有办法知道 ab 是否被隐形返回?

动机是我想创建一个函数,如果一个值被不可见地返回,该函数也想不可见地返回值。

最佳答案

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)

一旦你有了 ab 就没有办法了,因为 identical(a,b)是的。您只能在表达式上调用 withVisible。除非发生了什么懒惰或 promise 。

关于r - 我怎么知道一个值是否被函数隐形返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867560/

相关文章:

r - 无监督字符串聚类

r - 通过 geom_point 和 ggtern 中的黑色轮廓填充

R从两列创建一个序列表

r - 将数据分成 tidyr 中另一列给出的列

r - Valgrind 警告 : unknown option '--track-origins=yes'

r - 在 R 中拆分包含多个分隔符的字符串

r - R 中的高效三角反代换

R:循环/函数创建用于比较的矩阵(对比)

R - 在 lm 中使用回归时如何获取底层矩阵?

r - 切断散点图网格线,但不完全在轴限制处标记