[R] How to index a matrix with different row-number for each column?

William Dunlap wdunlap at tibco.com
Tue Jun 12 17:33:25 CEST 2012


Use  a 2-column matrix of integer subscripts, the first column
being the row indexes and the the second the column indexes:
  > mt<-matrix(1:12,ncol=6)
  > vt<-c(1,2,2,2,1,2)
  > mt[cbind(vt,1:6)]
  [1]  1  4  6  8  9 12

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Zhenjiang Lan
> Sent: Tuesday, June 12, 2012 8:28 AM
> To: r-help at r-project.org
> Subject: [R] How to index a matrix with different row-number for each column?
> 
> here's my question: suppose I have a matrix:
> 
>     mt<-matrix(1:12,ncol=6)
> 
> now I have a vector
> 
>     vt<-c(1,2,2,2,1,2)
> 
> which means I want to get:
> the 1st row for column1;
> the 2nd row for column2;
> the 2nd row for column3;
> the 2nd row for column4;
> ...
> 
> that what I want is this vector:
> 1,4,6,8,9,12
> 
> Does anyone know how to do this fast?
> I know I can use for-loop to travel all columns,but that's not what I want.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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