[R] reason for na.last=TRUE in rank

McGehee, Robert Robert.McGehee at geodecapital.com
Thu May 19 22:02:55 CEST 2005


Because rank and order are (supposed to be) inverses of each other.

For example:
> a <- c(3, 1, NA)
> a[order(a[rank(a)])]
[1] 3 1 NA
> a[rank(a[order(a)])]
[1] 3 1 NA

BUT

> a[order(a[rank(a, na.last = FALSE)])]
[1] 1 NA 3

> a[rank(a[order(a)], na.last = FALSE)]
[1] 1 NA 3

-----Original Message-----
From: Alejandro Munoz del Rio [mailto:munoz at stat.wisc.edu] 
Sent: Thursday, May 19, 2005 1:01 PM
To: r-help at stat.math.ethz.ch
Subject: [R] reason for na.last=TRUE in rank


Dear UseRs,

Could someone explain to me why the default behaviour of rank() is to
assign the
largest rank to missing data

> rank(c(3, 1, NA))
[1] 2 1 3

as opposed to what I would hazard would be the expected 2, 1, NA? 

Despite consistency being the hobgoblin of little minds, of two
closely related functions one handles NAs in the same way (order())
but another one doesn't (sort()). order() also uses the "NA last" rule
by default, whereas sort() removes NAs.

alejandro

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list