And as followup > system.time(d<-10000000*10000001/2) user system elapsed 0.02 0.00 0.02 > identical(a,b,d) [1] TRUE >
Regards Petr > > 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. ______________________________________________ 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.