[Rd] sort changes datatype of operand (PR#9121)
Brahm, David
David.Brahm at geodecapital.com
Thu Aug 17 23:40:25 CEST 2006
On 8/3/2006 10:34 AM, <stephen.ponzio at citigroup.com> noted that,
starting with R-2.3.0, sort() fails to preserve date classes:
> dates <- seq(Sys.Date(), len=5, by="1 day")
> dates[order(dates)]
> [1] "2006-08-03" "2006-08-04" "2006-08-05" "2006-08-06" "2006-08-07"
> sort(dates)
> [1] 13363 13364 13365 13366 13367
and Duncan Murdoch <murdoch at stats.uwo.ca> replied:
> The problem is that some classes assume a particular ordering for
> values; sort can mess them up. If you know that's not the case, you
> can protect the class yourself:
> cl <- class(dates)
> sorteddates <- sort(dates)
> class(sorteddates) <- cl
I have to agree with Stephen (and Alex Dannenberg in another post)
that this change is unfortunate for date classes. How do you
reproduce this old behavior (without assuming alphanumeric ordering):
> x <- matrix(1:12, 4,3)
> group <- Sys.Date() + c(0,1,0,1)
> rowsum(x, group)
[,1] [,2] [,3]
2006-08-17 4 12 20
2006-08-18 6 14 22
Under R-2.3.1, the result is now:
[,1] [,2] [,3]
13377 4 12 20
13378 6 14 22
Blech!
-- David Brahm (brahm at alum.mit.edu)
More information about the R-devel
mailing list