A perhaps faster approach takes advantage of the column major ordering of arrays and the expand.grid() function. I say "perhaps" faster, because "apply" family functions are still actually loops at the R level.
Anyway, try this (using your little example): ## create a data frame (which is also a list) of i,j,k,index combinations: z <- expand.grid(i=1:2, j= 1:2, k = 1:2) ## Use do.call() to feed the columns of z to mapply yourarray <- array(do.call(mapply,c(prod,z)),dim=c(2,2,2)) Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, Feb 1, 2016 at 6:29 AM, Jue Lin-Ye <jl.i...@gmail.com> wrote: >> >> Date: Sat, 30 Jan 2016 01:03:30 +0000 >> From: Matteo Richiardi < >> >> matteo.richia...@maths.ox.ac.uk> >> To: r-help@r-project.org >> Subject: [R] updating elements of a list of matrixes without 'for' >> cycles >> Message-ID: >> < >> cabsru1lkohuz8m9jw1ju+nemksprirrtd_0wzotrlwi3z6d...@mail.gmail.com> >> Content-Type: text/plain; charset=UTF-8 >> >> Hi, following an earlier suggestion from the list, I am storing my >> data in a "cube", i.e. an array of matrixes. >> Is there any smarter way of updating the elements of the cube through >> a function, other than the three 'for' cycles in the example below? >> (please note that the example is simplistic; in particular, my >> function is more complicated). >> >> # parameters >> I <- 2L >> J <- 2L >> H <- 2L >> >> # data container: an array of matrixes >> mycube <- array(dim=c(I,J,H)) >> >> # initialisation >> for (h in 1:H) { >> init <- matrix(c(rep(0,J)),nrow=I,ncol=J) >> mycube[,,h] <- init >> } >> >> # function >> foo = function(i,j,h){ >> mycube[i,j,h] <<- i*j*h >> } >> >> # update >> >> for(h in 1:H){ >> # males: >> for(i in 1:I) >> for(j in 1:J) >> foo(i,j,h) >> } >> >> Thanks a lot for your help. Matteo >> >> >> > Greetings! Have you tried sapply() on this script? > > -- > Jue > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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 -- To UNSUBSCRIBE and more, see 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.