测试R中两个函数的相等性

Kev*_*ham 6 r

有没有办法确定两个不同功能的文本是否相同?

x <- function(x) print(x + 2)
y <- function(x) print(x + 2)
identical(x, y)
[1] FALSE
identical(mget("x"), mget("y"))
[1] FALSE
identical(unname(mget("x")), unname(mget("y")))
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

Pie*_*une 10

我认为这是一个很好的方法.它适用于许多不同的对象:

all.equal(x,y)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

  • ...并且还会显示差异,如果有的话 (2认同)
  • 值得注意的是,`same`在比较函数时提供了比`all.equal`的"deparse and compare"更灵活的控制.在R-devel中,添加了"ignore.srcref"参数,当设置为TRUE时,对于`same(x,y)`返回TRUE.这也可以通过删除"x"和"y"的属性来实现 - 相同("attributes < - "(x,NULL),"attributes < - "(y,NULL))`.`?same`也给出了字节编译函数灵活性的一个例子; `same(x,compiler :: cmpfun(x))`VS`相同(x,编译器:: cmpfun(x),ignore.bytecode = FALSE)`VS`all.equal(x,compiler :: cmpfun(x) )` (2认同)