# Re: [R] get cells by the combination of their column and row names

From: Phil Spector <spector_at_stat.berkeley.edu>
Date: Wed, 20 Apr 2011 13:29:30 -0700 (PDT)

Yoav -

Here's one possibility:

> wh = outer(rownames(mtrx),colnames(mtrx),
+ function(x,y)substr(x,nchar(x)-2,nchar(x)) == substr(y,nchar(y)-2,nchar(y)))
> mtrx[wh]

[1] 1 6 8

If you knew that all of the row and column names were 4 characters long, it would simplify to

> mtrx[outer(rownames(mtrx),colnames(mtrx),function(x,y)substr(x,2,4) == substr(y,2,4))]

Hope this helps.

• Phil Spector Statistical Computing Facility Department of Statistics UC Berkeley spector_at_stat.berkeley.edu

On Wed, 20 Apr 2011, yoav baranan wrote:

>
> Hi,
> I have a (correlation) matrix and I want to select a subset of its cells depending on the combination of their column and row names.
> This illustrates my problem: mtrx <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3, dimnames = list(c('c132','c432', 'c233'), c('r132','r233', 'r432')))> mtrx r132 r233 r432c132 1 4 7c432 2 5 8c233 3 6 9
> At this point I want to compute the mean of the cells in which the column and the row names share the same suffix (i.e., the cells mtrx[1,1], mtrx[2,3], mtrx[3,2]). By suffix I mean the last three digits of the row/col name.
> I need a generic code (and not vec<-c(mtrx[1,1], mtrx[2,3], mtrx[3,2])) because I don't know in advance how many rows and columns I will have (currently 118).
> Thanks, Yoav
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_r-project.org mailing list
>
https://stat.ethz.ch/mailman/listinfo/r-help