Unexpected results from sort function when partial and index are used
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