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.

Reply via email to