2016-09-16 54 views
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 

回答

10

我覺得這是一個很好的方法。它適用於許多不同的對象:

all.equal(x,y) 
[1] TRUE 
+2

......,也將顯示差異,如果有任何 –

+2

值得一提的是'identical'提供比較功能時比「deparse和比較」更加靈活的控制'all.equal'。在R-devel中,添加了「ignore.srcref」參數,當設置爲TRUE時,將返回「相同(x,y)」的TRUE。這也可以通過去除「x」和「y」 - 「相同」(「屬性< - 」(x,NULL),「屬性< - 」(y,NULL))「屬性來實現。 '?identical'也給出了一個關於字節編譯函數的靈活性的例子。 (x,compiler :: cmpfun(x),ignore.bytecode = FALSE)'VS'all.equal(x,compiler :: cmpfun(x) )' –

3

使用diffobj包:

library(diffobj) 

x <- function(x) print(x + 2) 
y <- function(x) print(x + 2) 

diffPrint(target = x, current = y) 

enter image description here

any()結束語會給TRUE/FALSE:

any(diffPrint(target = x, current = y)) 
# FALSE 
相關問題