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,
>>>
>>> ______________________________**________________
>>> [email protected] 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]]
>>
>>
>> ______________________________**________________
>> [email protected] 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]]
______________________________________________
[email protected] 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.