【发布时间】:2015-08-28 08:18:48
【问题描述】:
我有两个函数,f 和 g,定义相同:
f <- function(x) { x + 1 }
g <- function(x) { x + 1 }
但是,identical 函数认为它们不同:
identical(f, g)
FALSE
我认为这是因为它们在内存中占据了不同的区域; identical(f, f) 给 TRUE。
我只对测试具有相同定义的函数感兴趣;我可以使用其他功能吗?
行为应该是:
sameDefinition(f, f)
TRUE
sameDefinition(f, g)
TRUE
sameDefinition(f, function(x) { x + 1 })
TRUE
sameDefinition(f, function(x) { x + 3 })
FALSE
# Equivalent, but different definitions
sameDefinition(f, function(x) { x + 2 - 1 })
FALSE
【问题讨论】:
-
你可以试试
all.equal(在另见部分阅读?identical时发现) -
是的,这行得通。谢谢。
-
一个函数不仅仅包含一个主体。就连身体也有文字之外的东西。如果您只想比较正文中的文本,请尝试
identical(as.character(body(g)), as.character(body(f)))
标签: r function equality equivalent