[R] Object equality for S4 objects

Stavros Macrakis macrakis at alum.mit.edu
Thu Jul 30 20:32:37 CEST 2009


On Thu, Jul 30, 2009 at 12:01 PM, Martin Morgan<mtmorgan at fhcrc.org> wrote:
> 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.

Thanks for the clarification.

For some reason, I thought that S4 objects (unlike S3 objects) were
objects in the conventional computer science sense, that is, mutable.
Compare proto objects, which *are* objects in the usual sense:

> proto1 <- proto(expr= {x=23})
> proto2 <- proto1
> proto1$x <- 45
> proto2$x
[1] 45                    # proto1 and proto2 are the same object

> setClass("test",representation(a="logical"))
[1] "test"
> s41 <- new("test")
> s42 <- s41
> s41 at a <- TRUE
> s42 at a              # s41 and s42 are different objects
logical(0)

It would thus perhaps be clearer to speak of S4 "values" rather than
S4 "objects".

                -s




More information about the R-help mailing list