[R] Sorted index of values in matrix

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Fri Apr 15 18:25:16 CEST 2022


... and here is another version of Jeff's solution using the built in
row() and col() functions instead of explicitly creating the indices
(but his version generalizes to arbitrary arrays; this does not):

 qq <- matrix(12:7, nrow =3) ## start with a non-sorted matrix
> qq
     [,1] [,2]
[1,]   12    9
[2,]   11    8
[3,]   10    7
> sort(qq)
[1]  7  8  9 10 11 12 ## the sorted values

> o <- order(qq)
> cbind(row(qq)[o], col(qq)[o])
## matrix of (row, col) indices of sorted values in original unsorted matrix
     [,1] [,2]
[1,]    3    2
[2,]    2    2
[3,]    1    2
[4,]    3    1
[5,]    2    1
[6,]    1    1

Cheers,
Bert Gunter

On Fri, Apr 15, 2022 at 8:33 AM Jeff Newmiller <jdnewmil using dcn.davis.ca.us> wrote:
>
> Please stop posting in HTML format.
>
> I think your specified result coordinates are in (col,row) order, which is not normal for R. The solution below yields (row,col) order.
>
> qq <- structure(1:6, .Dim = 3:2, .Dimnames = list(c("1", "2", "3"), c("1", "2")))
> pos <- expand.grid( r = seq.int( nrow( qq ) )
>                   , c = seq.int( ncol( qq ) ) )
> qq #'confirm source layout is column major
> pos[ order( qq ), ] # (row,col)
> pos[ order( qq ), 2:1 ] # (col,row)
>
>
> On April 15, 2022 7:53:36 AM PDT, Eliza Botto <eliza_botto using outlook.com> wrote:
> >deaR useRs,
> >
> >I have this following simple dataset
> >
> >> dput(qq)
> >
> >structure(1:6, .Dim = 3:2, .Dimnames = list(c("1", "2", "3"),
> >    c("1", "2")))
> >
> >I want to extract row and column index of the sorted values of this matrix
> >
> >For example,
> >
> >sort(qq) command will execute the sorted values of this matrix as (1 2 3 4 5 6). Instead of values, I want the row and column names of these sorted values as (1,1), (1,2), (1,3), (2,1), (2,2), (2,3)
> >
> >I thankyou very much in advance for your help.
> >
> >Eliza
> >
> >
> >       [[alternative HTML version deleted]]
> >
> >______________________________________________
> >R-help using 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.
>
> --
> Sent from my phone. Please excuse my brevity.
>
> ______________________________________________
> R-help using 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