On May 7, 2013, at 06:39 , Mark Coletti wrote:

> I have a matrix of data that has a corresponding vector of indices.  I
> would like to use those indices to extract specific matrix elements into a
> new vector.  In other words, I have an R X C matrix with a corresponding
> vector of C elements that have numbers mapping into specific elements of
> the matrix.  I'd like to generate a new vector C long that contains those
> elements.
> 
> My first approach is to iteratively grind through each matrix column to
> manually extract the element corresponding to that column as referenced by
> the appropriate index, and then appending that to a vector.  However, my R
> instincts are that any time one has to craft a for loop to do something in
> R that you are very likely Doing It Wrong; there's probably a very simple
> one liner in R that will do all that that for loop would do.
> 
> I know there must be a simple "R way" to do this, but I remain flummoxed on
> how to do so.  I've been feebly poking at the plyr package's maplyr() and
> colwise() since I have a matrix and want to extract an array from it, and
> this is inherently a column wise operation, so ... hmm.
> 
> Should I just give up and use a for loop?


As Berend says, you're not specifying the problem very clearly. Are you looking 
for something like this (indexing with a matrix)?

> M <- matrix(round(rnorm(20,20,10)),4,5)
> M
     [,1] [,2] [,3] [,4] [,5]
[1,]   29   19   18   13    0
[2,]   24   24   11   25   10
[3,]   20    9   12   11   24
[4,]   28    3   16   17   32
> Ix <- sample(1:4,5,replace=TRUE)
> Ix
[1] 3 2 2 4 3
> M[cbind(Ix,1:5)]
[1] 20 24 11 17 24


-- 
Peter Dalgaard, Professor
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-help@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.

Reply via email to