例如,
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/