[R] sorting & subsetting a data.frame

David Winsemius dwinsemius at comcast.net
Mon Mar 7 00:08:52 CET 2011


On Mar 6, 2011, at 5:49 PM, Liviu Andronic wrote:

> Dear all
> This may be obvious, but I cannot get it working. I'm trying to subset
> & sort a data frame in one go.
> x <- iris
> x$Species1 <- as.character(x$Species)
> ##subsetting alone works fine
> with(x, x[Sepal.Length==6.7,])
> ##sorting alone works fine
> with(x, x[order(Sepal.Length, rev(sort(Species1))),])
> ##gets subsetted, but not sorted as expected
> with(x, x[(Sepal.Length==6.7) & order(Sepal.Length,  
> rev(sort(Species1))),])

You are doing logical operations between a logical and numeric vector.  
You should get a bunch of TRUE's and FALSE's and it might be as you  
say, strange. (The ordering will not occur.)


> ##gets subsetted, but sorts very strangely
> xa <- with(x, x[Sepal.Length==6.7,]); with(xa, xa[order(Sepal.Length,
> rev(sort(Species1))),])
> xa <- with(x, x[Sepal.Length==6.7,]); with(xa,  
> xa[order(rev(sort(Species1))),])
>
> I've checked The R Inferno, Quick-R and several other places with no
> obvious solution.
>
> Any ideas? Regards
> Liviu
>
> -- 

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list