[Rd] sort.int(S3object) strips class but not the is.object flag
William Dunlap
wdunlap at tibco.com
Mon Apr 11 19:28:22 CEST 2011
> -----Original Message-----
> From: r-devel-bounces at r-project.org
> [mailto:r-devel-bounces at r-project.org] On Behalf Of William Dunlap
> Sent: Monday, April 11, 2011 10:10 AM
> To: R-devel at r-project.org
> Subject: [Rd] sort.int(S3object) strips class but not the
> is.object flag
>
> If x has an S3 class then sort.int(x) returns a value
> without an S3 class but which has the is.object flag set,
> which, I think, causes identical() give a false/misleading
> report:
>
> > x <- structure(1:3, class="unrecognizedClass")
> > y <- sort.int(x)
> > t <- 1:3
> > identical(y, t) # expect TRUE
> [1] FALSE
The misleading is.object flag can also affect
the time it takes to sort objects (it looks like
xtfrm is only called when is.object reports TRUE):
> system.time(for(i in 1:1e5) order(y)) # is.object(y) is TRUE
user system elapsed
12.07 0.00 11.28
> system.time(for(i in 1:1e5) order(t)) # is.object(t) is FALSE
user system elapsed
1.98 0.01 2.01
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> > identical(as.vector(y), as.vector(t)) # expect TRUE
> [1] FALSE
> > dput(y)
> 1:3
> > dput(t)
> 1:3
> > class(y)
> [1] "integer"
> > class(t)
> [1] "integer"
> > is.object(y)
> [1] TRUE
> > is.object(t)
> [1] FALSE
>
> The files made by
> save(t, file="t.Rdata", compress=FALSE)
> save(y, file="y.Rdata", compress=FALSE)
> differ in 2 places, where the first is presumably
> the name of the object:
> % cmp -l y.Rdata t.Rdata
> 36 171 164
> 39 1 0
> (The problem persists after a save/load cycle.)
>
> This is on R 2.12.2 on Linux. Sorry, I don't have 2.13.0
> yet installed.
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list