[R] updating elements of a list of matrixes without 'for' cycles

Matteo Richiardi Matteo.Richiardi at maths.ox.ac.uk
Sat Jan 30 02:03:30 CET 2016


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



More information about the R-help mailing list