我有两个功能,f
和g
,它们具有相同的定义:在R中,我如何测试两个函数具有相同的定义?
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'?) – Tensibai
是的,作品。谢谢。 – sdgfsdh
函数不仅仅包含一个主体。除了文字之外,连身体都有其他的东西。如果只想比较正文中的文本,请尝试'same(as.character(body(g)),as.character(body(f)))' – user20637