[R] Unexpected results from sort function when partial and index are used
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Thu Nov 4 01:13:45 CET 2004
Tuszynski, Jaroslaw W. wrote:
> Hi,
>
> Consider the following example:
>
> sort(10:1, partial=3)
> ## 1 2 3 7 6 5 4 8 9 10
>
> sort(10:1, index=T)
> ## $x: 1 2 3 4 5 6 7 8 9 10
> ## $ix: 10 9 8 7 6 5 4 3 2 1
>
> sort(10:1, partial=3, index=T)
> ## 1 2 3 7 6 5 4 8 9 10
>
> The first 2 calls gave expected returns; however, the third one did not
> returned an index as requested. I could not find anything about it in
> http://stat.ethz.ch/R-manual/R-patched/library/base/html/sort.html
> <http://stat.ethz.ch/R-manual/R-patched/library/base/html/sort.html> , so it
> seems to be an "undocumented feature".
>
> Does any body know how to "convince" sort to return index of partially
> sorted array?
>
> Thanks
>
> Jarek
Jarek,
Looking at the code for sort, we see the following:
if (!is.null(partial)) {
if (!all(is.finite(partial)))
stop("non-finite `partial'")
y <- .Internal(psort(x, partial))
} else {
# other sort code
}
so index.return is ignored if partial is provided. To get the index you
can use ?match:
z <- rnorm(10)
x <- sort(z, partial = 3)
ix <- match(z, x)
Hopefully, I used ?match correctly. Please verify on your own.
--sundar
More information about the R-help
mailing list