Skip to content
Back to formatted view

Raw Message

Message-ID: <41897439.9010804@pdf.com>
Date: 2004-11-04T00:13:45Z
From: Sundar Dorai-Raj
Subject: Unexpected results from sort function when partial and index are used
In-Reply-To: <9CC1B717EF3BD511AD98000103D63FC53FA6EF@us-arl-asg.mail.saic.com>

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