[Rd] sort changes datatype of operand

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Aug 18 09:07:00 CEST 2006


Please do note that this too is a reading error. The documentation for 
rowsum() says

   group: a vector giving the grouping, with one element per row of
          'x'. 

R has used 'group' as if it were as.vector(group), as it was entitled to 
do.  If you do not want that, give a _vector_ with the property you do 
want, e.g. as.character(group).

You could also call rowsum() with reorder=FALSE and reorder later to your 
taste.

On Thu, 17 Aug 2006, Brahm, David wrote:

> 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)

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list