Hello,

I have two matrices. They both have different row names and column names,
but they have some common row names and column names. The row names and
column names that are the same are what I am interested in. I also want the
columns in the two matrices aligned the same. In the end, I need to do
rd[1,1] and ua[1,1], for example and be accessing the same column and row
for both matrices.  Thank you very much for all you help.

I can do it, but I am pretty sure there is a better/faster way:

################ make some sample data
ua = matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)
colnames(ua) = c('a','b','c')
rownames(ua)= c('ra','rb')
rd1 = matrix(c(7,8,9,10,11,12,13,14,15,16,17,18),nrow=3,ncol=4)
colnames(rd1) = c('c','b','a','d')
rownames(rd1)= c('rc','rb','ra')

> rd1
c  b  a  d
rc 7 10 13 16
rb 8 11 14 17
ra 9 12 15 18
> ua
a b c
ra 1 3 5
rb 2 4 6

##################### get common columns and rows and order them the same,
this works but is slow'ish
rd1_cn = colnames(rd1)
ua_cn = colnames(ua)
common_t = merge(rd1_cn,ua_cn,by.x=1,by.y=1)
common_t = as.character(common_t[,1])
rd1 = rd1[,common_t]
ua = ua[,common_t]
rd1_d = rownames(rd1)
ua_d = rownames(ua)
common_d = merge(rd1_d,ua_d,by.x=1,by.y=1)
common_d = as.character(common_d[,1])
rd = rd1[common_d,]
ua = ua[common_d,]


############ this is what I want
> rd
a  b c
ra 15 12 9
rb 14 11 8
> ua
a b c
ra 1 3 5
rb 2 4 6


Thanks!

ben

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

Reply via email to