Skip to content
Prev 78432 / 398502 Next

mapply for matrices

Hi,

I have a matrix A and a vector b, and would like to apply a function
f(a,b) to the rows of A and the elements of b.  Eg

A <- matrix(1:4,2,2)
b <- c(5,7)
f <- function(a,b) {sum(a)*b}

myapply(f,A=A,b=b)

would give

(1+3)*5 = 20
(2+4)*7 = 42

I found mapply, but it does not work for matrices.  How could I do
this without loops?  The above is just a toy example, the problem I am
using this for has larger matrices, and f is a computation that does
not handle vectors.

One thing I thought of is

sapply(seq(along=b),function(i,A,b){f(A[i,],b[i])},A=A,b=b)

but this is not very elegant.  I checked the archives and found nothing.

Thank you,

Tamas