2016-09-16 2 views
6

두 개의 다른 기능이 동일한 지 확인하는 방법이 있습니까? any()에 포장두 기능의 동일성 테스트 R

library(diffobj) 

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

diffPrint(target = x, current = y) 

enter image description here

가 FALSE/TRUE 줄 것이다 :

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

... 또한 그것은 identical'가보다 기능 비교 "deparse와 비교"의 더 유연한 제어를 제공 '한다는 지적 가치가 어떤 –

+2

이 있어야한다, 차이점을 보여줍니다 : 그것은 많은 다른 개체 작동 'all.equal'. R-devel에서 "ignore.srcref"인수가 추가됩니다.이 인수는 TRUE로 설정된 경우 - identical (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 패키지 사용

any(diffPrint(target = x, current = y)) 
# FALSE