Hi:
Is this what you're after?
m <- array(1:27, c(3, 3, 3))
xx <- 1:3
Reduce('+', lapply(xx, function(k) xx[k] * m[, , k]))
> m
, , 1
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
, , 2
[,1] [,2] [,3]
[1,] 10 13 16
[2,] 11 14 17
[3,] 12 15 18
, , 3
[,1] [,2] [,3]
[1,] 19 22 25
[2,] 20 23 26
[3,] 21 24 27
> xx <- 1:3
> Reduce('+', lapply(xx, function(k) xx[k] * m[, , k]))
[,1] [,2] [,3]
[1,] 78 96 114
[2,] 84 102 120
[3,] 90 108 126
HTH,
Dennis
On Mon, Mar 28, 2011 at 4:10 PM, Giuseppe <neox86@gmail.com> wrote:
> I have the following situation.
>
> H12 is an array of dimension (n,k,m) and hessian_lambda is a numeric
> of length m.
>
> I need to multiply each matrix H12[,,1], H12[,,2], ..., H12[,m] by
> hessian_lambda[1], hessian_lambda[2], ..., hessian_lambda[m],
> respectively, and then add the resulting (n,k) matrices. What I am
> using at the moment is the following code:
>
> H <- matrix(0, n, k)
> for(j in 1:(m)) {
> H <- H + H12[,,j]*hessian_lambda[j]
> }
>
> Does anybody see a way to speed up this without using loop? (The
> output needs to be a matrix).
>
> Thank you for your time.
>
> ______________________________________________
> 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.
>
[[alternative HTML version deleted]]