If you have lots of memory there is an obvious strategy: d12 <- prod(dim(A)[1:2]) A <- A * array(rep(B, each = d12), dim = dim(A))
I don't really see much wrong with the obvious for() loop, though: for(b in 1:length(B)) A[,,b] <- A[,,b] * B[b] Bill Venables CSIRO Laboratories PO Box 120, Cleveland, 4163 AUSTRALIA Office Phone (email preferred): +61 7 3826 7251 Fax (if absolutely necessary): +61 7 3826 7304 Mobile: +61 4 8819 4402 Home Phone: +61 7 3286 7700 mailto:[EMAIL PROTECTED] http://www.cmis.csiro.au/bill.venables/ -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ingmar Visser Sent: Thursday, 27 March 2008 7:58 AM To: R-help@r-project.org Subject: [R] avoiding loops Hi, I need to compute an array from a matrix and an array: A <- array(1:20,c(2,2,5)) B <- matrix(1:10,5) And I would like the result to be an array consisting of the following: rbind(A[1,,1]*B[1,], A[2,,1]*B[1,]) rbind(A[1,,2]*B[2,], A[2,,2]*B[2,]) rbind(A[1,,3]*B[2,], A[2,,3]*B[2,]) etc. Hence the result should have the same dimension as A, ie a series of 2 by 2 matrices. Short of a for loop over the the last index of A I have struggled with versions of apply but to no avail ... Any insights much appreciated, Best, Ingmar ______________________________________________ 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. ______________________________________________ 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.