[Rd] sort.int(S3object) strips class but not the is.object flag

Duncan Murdoch murdoch.duncan at gmail.com
Mon Apr 11 19:34:05 CEST 2011


On 11/04/2011 1:10 PM, William Dunlap wrote:
> 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:

I think your analysis is correct.  It's too late for 2.13.0, but I'll 
fix this in R-devel, and backport it to 2.13.0-patched.

Duncan Murdoch

>
>    >  x<- structure(1:3, class="unrecognizedClass")
>    >  y<- sort.int(x)
>    >  t<- 1:3
>    >  identical(y, t) # expect TRUE
>    [1] FALSE
>    >  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