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.