Hi Stavros --

Stavros Macrakis <macra...@alum.mit.edu> writes:

> To test two environments for object equality (Lisp EQ), I can use 'identity':
>
>> e1 <- environment(local(function()x))
>> e2 <- environment(local(function()x))
>> identical(e1,e2)                      # compares object identity
> [1] FALSE
>> identical(as.list(e1),as.list(e2))    # compares values as name->value 
>> mapping
> [1] TRUE                                # (is there a better way to do this?)
>
> What is the corresponding function for testing whether two S4 objects
> are the same object?  It appears that 'identity' for S4 objects
> compares the *value*, not the *object identity*:

Hi Stavros

S4 objects do not have the semantics of environments, but of lists (or
of most other R objects), so it is as meaningful to ask why
identical(s1, s2) returns TRUE as it is to ask why
identical(list(x=1), list(x=1)) returns TRUE.

Martin

>> setClass("simple",representation(a="logical"))
> [1] "simple"
>> s1 <- new("simple"); s2 <- new("simple")
>> identical(s1,s1)
> [1] TRUE                               # not surprising
>> identical(s1,s2)
> [1] TRUE                               # ? not comparing object identity
>> s...@a <- TRUE
>> s...@a <- TRUE
>> identical(s1,s2)
> [1] TRUE
>> s...@a <- TRUE
>> s...@a <- FALSE
>> identical(s1,s2)
> [1] FALSE
>
> Thanks,
>
>               -s
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to