Hi > > For loops are really, really slow in R. In general, you want to avoid them
I strongly disagree. ***Proper*** use of looping is quite convenient and reasonably fast. Consider > system.time( { + a=0 + for (i in 1:10000000) { + a <-a+i + } + a + }) user system elapsed 10.22 0.02 10.28 > > system.time(b<-sum(as.numeric(1:10000000))) user system elapsed 0.09 0.01 0.11 > identical(a,b) [1] TRUE It is usually implementing C habits into R code what makes looping slow. The slowest part of a program is usually programming and it is influenced mainly by programmer. Regards Petr > like the plague. If you absolutely must insist on using them in large, > computationally intense and complex code, consider implementing the relevant > parts in C, say, and calling that from R. > > Staying within R, you can probably considerably speed up that code by > storing gx and gy as a multi-dimensional arrays. (e.g. for sample data, > something like > > rawGy = sample( 1:240, 240^2* 241, replace = T) > rawGx = sample( 1:240, 240^2 *241, replace = T) > gx = array(rawGx, dim = c(length(s) - 1, 240, max(rawGx)+1 ) ) > gy = array(rawGy, dim = c(length(s) - 1, 240, max(rawGy)+1 ) ) > > ), in which case, you can easily do the computation without loops by > > gxa = (gx[ ,a,1]+ 1) > gya =(gy[ ,a, 1] +1) > uv = gx[cbind(1:(length(s) - 1) , b, gxa)] / gx[cbind(1:(length(s) - 1) , a, > gxa)] - gy[cbind(1:(length(s) - 1) ,b, gya)]/gy[cbind(1:(length(s) - 1) ,a, > gya)] > > or similar, which will be enormously faster (on my computer, there's an over > 30x speed up). With a bit of thought, I'm sure you can also figure out how > to let it vectorise in a, as well... > > Zhou > > -- > View this message in context: http://r.789695.n4.nabble.com/For- > calculation-is-so-slow-tp4630830p4630855.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.