On Jun 10, 2009, at 1:36 PM, Logickle wrote:
Sorry, there may be some lingo for describing the extraction problem
I have,
but I don't know it.
I have a matrix of 2 rows and N columns, and a vector of N 1s and 2s.
Matrix M:
1 2 3 4 ... N
1 A C D G ...
2 B D F H ...
Vector v:
1 2 2 1 2 1 1 ... N
I'd like to apply v to M to get
Vector w:
A D F G ...
Using length 10 M and v
> w <- apply(cbind(v, 1:length(v) ), 1, function(x) M[x[1], x[2] ])
[1] "A" "D" "F" "G" "I" "K" "N" "P" "R" "S"
> M <- matrix(LETTERS[1:20], nrow=2)
> M
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "A" "C" "E" "G" "I" "K" "M" "O" "Q" "S"
[2,] "B" "D" "F" "H" "J" "L" "N" "P" "R" "T"
> v <- c(1,2,2,1, sample(1:2, 6, replace=TRUE) )
> v
[1] 1 2 2 1 1 1 2 2 2 1
The number of rows in M should not be a problem.
I.e. each element of v is interpreted as a row-index used to extract
that
row's value from the corresponding column in M into the
corresponding column
of w.
Also eventually nrow(M) > 2, in which case the value of the elements
of v
would range over 1:nrow(M).
Seems it should be simple, but maybe not?
Seems reasonably simple.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.