r - 检查变量是否是 R 中特定函数的结果

标签 r

例如,

example.function = function(x){
    return (x+1)}

然后我做:

test = example.function(2)

如何检查变量 test 是否是函数 example.function 的结果?

最佳答案

如果您正在编写函数,则可以使用属性

example.function = function(x) `attr<-`(x + 1, "created by", "example.function")

这样结果仍然是一个完全标准的数值对象,但是它多了一个属性:

x <- example.function(2)

x
#> [1] 3
#> attr(,"created by")
#> [1] "example.function"

一种更复杂的方法是通过使用 S3 调度和创建特定测试函数来隐藏属性:

example.function <- function(x) `attr<-`(x + 1, "class", "special")

print.special <- function(x) print(as.numeric(x))

is.special <- function(x) class(x) == "special"

x <- example.function(2)

x
#> [1] 3

is.special(x)
#> [1] TRUE

如果您问是否可以更一般地判断一个对象是否来自任何特定函数,那么答案是否定的。

关于r - 检查变量是否是 R 中特定函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63802039/

相关文章:

regex - 两个不同数据帧之间的最大子串匹配

r - 需要帮助使用 R 中的 Vegan 包为绘图制作图例

r - 如何查找一个向量中的元素在另一向量 R 中的索引

r - 在 R 中过滤数据

r - 如何将父函数中的 "..."参数传递给r中的两个子函数

r - ggplot2饼图标签中的意外行为

rmarkdown 投影仪演示 : how to not print section slides?

r - 如何在不使用 lapply 的情况下将列表列表转换为 R 中的稀疏矩阵?

r - 如何将经过训练和测试的随机森林模型应用于 tidymodels 中的新数据集?

r - `tfread`存在吗?