Sorry - I just noticed you actually have an error in your code: you had parentheses everywhere they were not needed and I overlooked you had not put them where they actually are needed. It has to be for (i in 1:(m-1)) ..., not as you wrote. I'm sure you'll understand the difference.
d <- numeric(m-1) for (i in 1:(m-1)) { d[i] <- n - sum(x[1:i]) - i } B. On Oct 25, 2015, at 8:13 AM, Boris Steipe <boris.ste...@utoronto.ca> wrote: > If this code is slow it is not because you are using loops, but because you > are dynamically building your vectors and lists and their size needs to > change with each iteration causing significant unnecessary computational > overhead. If you simply do something like > > d <- numeric(m-1) > for (i in 1:m-1) { > d[i] <- n - sum(x[1:i]) - i > } > > for all of your loops, you will see already see very significant speedup. (If > you look at my code formatting, and compare it with your own you may also > benefit.) The bottom line: the point is not to avoid for-loops, but to speed > up your code. > > Nb. if you want to avoid loops for some aesthetic reason, read about apply() > and its siblings, and experiment with it. Of course, internally an apply() > statement uses loops... > > NNb: Do you know how to profile your code? How do you know which part of your > code is actually slowing it down? > > > > B. > > > > > On Oct 25, 2015, at 6:42 AM, Maram SAlem <marammagdysa...@gmail.com> wrote: > >> Hi All, >> >> I wonder if I can avoid the for() loop in any of the following loops.These >> loops are a part of a larger code which I'm trying to accelerate. >> >> n=6 >> m=4 >> x<-c(0,1,1) >> >> 1st loop >> >> for (i in 1:m-1) >> { >> d[i]<- n- (sum(x[(1):(i)])) - i >> } >> e<- n*(prod(d)) >> >> >> 2nd loop >> >> LD<-list() >> for (i in 1:(m-1)) >> { >> LD[[i]]<-seq(0,x[i],1) >> } >> >> LD[[m]]<-seq(0,(n-m-sum(x)),1) >> LED<-expand.grid (LD) >> LED<-as.matrix(LED) >> >> >> 3rd loop >> >> for (i in 1:(m-1)) >> >> { >> >> h[i]<- choose(x[i],LED[j,i]) >> >> } >> >> >> >> 4th loop >> >> >> for (i in 1:(m-1)) >> >> { >> >> lm[i]<-(sum(LED[j,1:i])) + i >> >> } >> >> >> I appreciate if anyone has any suggestions or references. >> >> >> Thanks in advance. >> >> >> Maram Salem >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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 -- To UNSUBSCRIBE and more, see 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.