[R] Benefit of Iterators (package iterator)

Doran, Harold HDoran at air.org
Thu Dec 8 15:20:03 CET 2016

R-Help (and package author)

I'm trying to understand within the context of R what the benefit of using an iterator is. My only goal in using the foreach package is to improve computational speed with some embarrassingly parallel tasks I have to compute.

I took the example found at the link below to provide a reproducible example and ran it in a "conventional" way to iterate in a loop and the timing suggests here (as well as with my actual project) that using an iterator generates the same object, but at a much slower speed.

If I can get the same thing faster without using an iterator what would be the potential of its use?	


> library(doParallel)
> cl <- makeCluster(8) 
> registerDoParallel(cl)
> x <- matrix(rnorm(1000000), ncol=1000)
> itx <- iter(x, by='row')
> system.time(r1 <- foreach(i=itx, .combine=c) %dopar% mean(i))
   user  system elapsed 
   0.40    0.08    0.87 
> system.time(r2 <- foreach(i= 1:nrow(x), .combine=c) %dopar% mean(x[i,]))
   user  system elapsed 
   0.41    0.03    0.81 
> all.equal(r1,r2)
[1] TRUE

More information about the R-help mailing list