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

2011-04-20 Thread David Winsemius


On Apr 20, 2011, at 3:52 PM, 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 r432c13214 
7c432258c233369
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).


> mtrx[ sub("r|c", "", rep(rownames(mtrx),times=3) ) ==
sub("r|c", "", rep(colnames(mtrx), each=3))]
[1] 1 6 8

> mean( mtrx[ sub("r|c", "", rep(rownames(mtrx),times=3) ) ==
  sub("r|c", "", rep(colnames(mtrx), each=3))] )
[1] 5

Obviously you need to substitute NROW() and NCOL() vlues for the rep  
arguments but that should be simple.




Thanks, Yoav
[[alternative HTML version deleted]]

__
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.


David Winsemius, MD
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.


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

2011-04-20 Thread Phil Spector

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
 spec...@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 r432c132147c432258c233369
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@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.



__
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.


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

2011-04-20 Thread yoav baranan

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 r432c132147c432258c233369
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@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.