# [R] selecting matrix cels by two factors

Berton Gunter gunter.berton at gene.com
Sat Dec 17 00:29:41 CET 2005

```You can subscript any arbitrary array (of any dim) with an appropriately
dimensioned matrix of integer indices. So all you have to do is convert the
dimnames into indices. One simple way to do this is:

X[cbind(match(c("D","E","F","D","E","F"),rownames(X)),
match(c("A","C","A","B","B","C"),colnames(X)))]

This gives a vector, which you can dimension however you like.

-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA

"The business of the statistician is to catalyze the scientific learning
process."  - George E. P. Box

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Dimitri Joe
> Sent: Friday, December 16, 2005 3:02 PM
> To: R-Help
> Subject: [R] selecting matrix cels by two factors
>
> Hi,
>
> I have a (numeric) matrix X of the type
>
>  > X <- matrix(c(1:9),ncol=3,nrow=3)
>  > colnames(X) <- c("A","B","C")
>  > rownames(X) <- c("D","E","F")
>
> Also, a have a data frame Y like
>
>  > Y <- as.data.frame(cbind(	c("D","E","F","D","E","F"),
> +				c("A","C","A","B","B","C") ) )
>
> I want a matrix like
>
> 1 4	  		 X["D","A"] X["D","B"]
> 8 5  or, equivalentely,  X["E","C"] X["E","B"]
> 3 9			 X["F","A"] X["F","C"]
>
>
> Any suggestions?
>
> Dimitri
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help