[R] mapply for matrices

Gabor Grothendieck
2005-10-05T23:58:37Z

Try this:

   mapply(f, split(A, 1:nrow(A)), b)


On 10/5/05, Tamas K Papp <tpapp at princeton.edu>
wrote:
> 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
>
> --
> Bayesian statistics is difficult in the sense that thinking is difficult.
> --Donald A. Berry, American Statistician 51:242 (1997)
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
>