Hi Elio,

If you change the last line of the code:

m1[indx2N] <- m2[indx1]

to
m1[indx2N] <- m2[sort(indx1)]

 sum(m1[rownames(m1)=="p79",])
#[1] 191
 sum(m2[rownames(m2)=="p79",])
#[1] 191


The problem is in the order of the colnames/rownames in each of the datasets.  
I tested it on something like:
m1 <- matrix(0,12,12,dimnames=rep(list(paste0("a",1:12)),2))
 set.seed(49)
 m2 <- 
matrix(sample(0:2,4*4,replace=TRUE),ncol=4,dimnames=rep(list(c("a4","a6","a9","a12")),2))

which didn't show the problem.


But, if I change the order of colnames:

m1 <- matrix(0,12,12,dimnames=rep(list(paste0("a",c(1:3,8:12,4:7))),2))

set.seed(49)
 m2 <- 
matrix(sample(0:2,4*4,replace=TRUE),ncol=4,dimnames=rep(list(c("a9","a4","a6","a12")),2))
vec1 <- paste0(rownames(m1)[row(m1)],colnames(m1)[col(m1)])
vec2 <- paste0(rownames(m2)[row(m2)],colnames(m2)[col(m2)])
indx <- match(vec1,vec2)
indx1 <- indx[!is.na(indx)]

indx2 <- match(vec2,vec1)
indx2N <- indx2[!is.na(indx2)]
m1[indx2N] <- m2[sort(indx1)]
m1


Hope this helps.
A.K.






On Tuesday, March 4, 2014 3:16 PM, Elio Shijaku <sel...@gmail.com> wrote:

Hi Arun,

Sorry to disturb, but while trying your code to combine two matrices of unequal 
dimensions, I noticed a problem, the sum for each variable does not match, but 
the overall variables sum does match for both matrices, something isn't going 
right, perhaps the variables are getting mixed up, any idea??

Here is the code you sent me and the zipped files for testing:


dat1 <-
read.table("mtest.txt",header=TRUE)
dim(dat1)

dat2 <-
read.table("1998res_x.txt",header=TRUE)
dim(dat2)
m1 <- as.matrix(dat1)
m2 <- as.matrix(dat2)
vec1 <-
paste0(rownames(m1)[row(m1)],colnames(m1)[col(m1)])
vec2 <- paste0(rownames(m2)[row(m2)],colnames(m2)[col(m2)])
indx <- match(vec1,vec2)
indx1 <- indx[!is.na(indx)]
indx2 <- match(vec2,vec1)
indx2N <- indx2[!is.na(indx2)]
m1[indx2N] <- m2[indx1]

Thanks a lot!!


Best,


Elio

______________________________________________
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