[R] Question about base::rank results

David L Carlson dcarlson at tamu.edu
Mon Apr 27 23:14:35 CEST 2015


Apologies if this belabors the point, but let's look at your second example to see why order and rank are different:

> x <- c(12,34,15,77,78,22)
> names(x) <- 1:6
> x
 1  2  3  4  5  6 
12 34 15 77 78 22

I've added names to the values so we can watch how they change. If we sort the numbers we get them in increasing order with their original indices:

> sort(x)
 1  3  6  2  4  5 
12 15 22 34 77 78

The values in are order and the names show where each value came from originally. That sequence of index values is exactly what order(x) gives you:

> order(x)
[1] 1 3 6 2 4 5
> x[order(x)]
 1  3  6  2  4  5 
12 15 22 34 77 78

The rank function gives you the relative size of the value, not its position in the original vector:

> rank(x)
1 2 3 4 5 6 
1 4 2 5 6 3
> x[rank(x)]
 1  4  2  5  6  3 
12 77 34 78 22 15

The second value has rank 4, but that is not its index which is 2. The value with index 4 is 77 so it shows up in the second position.

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352



-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of J Robertson-Burns
Sent: Monday, April 27, 2015 2:34 PM
To: Giorgio Garziano; r-help at r-project.org
Subject: Re: [R] Question about base::rank results

There is a blog post on this topic:

http://www.portfolioprobe.com/2012/07/26/r-inferno-ism-order-is-not-rank/

Pat

On 26/04/2015 09:17, Giorgio Garziano wrote:
> Hi,
>
> I cannot understand why rank(x) behaves as outlined below.
> Based on the results of first x vector values ranking, which is as expected in my opinion,
> I cannot explain the following results.
>
>> x <- c(12,34,15,77,78)
>> x[rank(x)]
> [1] 12 15 34 77 78      (OK)
>
>> x <- c(12,34,15,77,78,22)
>> x[rank(x)]
> [1] 12 77 34 78 22 15   (?)
>
>> x <- c(12,34,77,15,78)
>> x[rank(x)]
> [1] 12 77 15 34 78      (?)
>
> Please any feedback ? Thanks.
>
> BR,
>
> Giorgio Garziano
>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list