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.