[R] Avoiding loops & apply -function

Yohan Chalabi chalabi at phys.ethz.ch
Wed Nov 5 15:33:25 CET 2008

>>>> "DM" == David Masson <david.masson at env.ethz.ch>
>>>> on Wed, 05 Nov 2008 15:13:37 +0100

   DM> I have a question concerning avoiding loops.
   DM> I know the function "apply" and I have used it several times, but I feel 
   DM> blocked
   DM> with this situation :
   DM> E <- array(X, dim = c(L,nlon,nlat) )
   DM> data <- matrix(Y, nrow=nlon, ncol=nlat )
   DM> G <- vector(length=L)
   DM>    for (l in 1:L)
   DM>     {
   DM>       G[l] <- function.F(data,E[l,,])
   DM>     }
   DM> -  "E" is a 3-dimensional array filled with a given data X.
   DM> -  "data" is a (nlon*nlat) matrix filled with given data Y.
   DM> -  "G" is my output vector.
   DM> I want to apply the function "function.F", but this function has an 
   DM> argument that depends
   DM> on the index "l" ...

do you mean something like that?

sapply(1:L, function(idx, data, E) function.F(data, E[idx,,]), data, E)

More information about the R-help mailing list