Muito obrigado, Rui. Cleaner and simpler than my approach. Regards, Jorge.-
On Sat, Jan 5, 2013 at 12:08 AM, Rui Barradas <> wrote: > Hello, > > Using part of your code, it's possible to do without Reduce, have foo > (fun, below) do the job. > > fun <- function(x, y, FUN = `+`){ > if(nrow(x) < nrow(y)){ > nas <- matrix(NA, ncol = ncol(x), nrow = nrow(y) - nrow(x)) > x <- rbind(x, nas) > }else{ > nas <- matrix(NA, ncol = ncol(y), nrow = nrow(x) - nrow(y)) > y <- rbind(y, nas) > } > FUN(x, y) > } > > fun(Mat1, Mat2) > fun(Mat1, Mat2, `*`) # Note the back quotes > > > Hope this helps, > > Rui Barradas > Em 04-01-2013 12:06, Jorge I Velez escreveu: > >> Dear Christofer, >> >> You can try the following: >> >> # proccess the matrices >> foo <- function(m1, m2){ >> if(ncol(m1) != ncol(m2)) stop('number of columns should be equal') >> if(nrow(m1) < nrow(m2)){ >> nas <- matrix(NA, ncol = ncol(m1), nrow = nrow(m2) - nrow(m1)) >> m1 <- rbind(m1, nas) >> } >> else{ >> nas <- matrix(NA, ncol = ncol(m1), nrow = nrow(m1) - nrow(m2)) >> m2 <- rbind(m2, nas) >> } >> list(m1, m2) >> } >> >> # process >> r <- foo(Mat1, Mat2) >> >> # basic operations >> Reduce("+", r) >> Reduce("*", r) >> Reduce("/", r) >> Reduce("-", r) >> >> HTH, >> Jorge.- >> >> >> On Fri, Jan 4, 2013 at 10:47 PM, Christofer Bogaso <> wrote: >> >> Hello again, >>> >>> Let say I have 2 matrices which equal number of columns but different >>> number of rows like: >>> >>> Mat1 <- matrix(1:20, 4, 5) >>> Mat2 <- matrix(1:25, 5, 5) >>> >>> Now for each column 1-to-5 I need to fetch the corresponding columns >>> of these 2 matrices and add the corresponding elements (ignoring NA >>> values if any). Therefore for the 1st column I need to do: >>> >>> (1+1), (2+2),...,(4+4), (NA+5) >>> >>> and so on >>> >>> And the resulting numbers will be stored in some other matrix >>> >>> Also note that, here I gave the example of addition, however, this can >>> be any user defined function. >>> >>> Is there any R way to do that, without using any for-loop? >>> >>> Thanks and regards, >>> >>> ______________________________**________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide >>> http://www.R-project.org/**posting-guide.html<http://www.R-project.org/posting-guide.html> >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> [[alternative HTML version deleted]] >> >> >> ______________________________**________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> >> PLEASE do read the posting guide http://www.R-project.org/** >> posting-guide.html <http://www.R-project.org/posting-guide.html> >> and provide commented, minimal, self-contained, reproducible code. >> > > [[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.