Working with Matrix
Hello Rui/Jorge,
This is shorter, and probably needs less memory for large matrices as
you create
an other copy by defining nas:
matrixOp <- function(m1, m2, op=`+`) {
rows <- min(nrow(m1), nrow(m2))
cols <- ncol(m1)
op(m1[1:rows, 1:cols], m2[1:rows, 1:cols])
}
Best,
mem
On 4 January 2013 14:08, Rui Barradas <ruipbarradas at sapo.pt> 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 at 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.
[[alternative HTML version deleted]]
______________________________________________ R-help at 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.
______________________________________________ R-help at 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.