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 <[email protected]> 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]]
>
> ______________________________________________
> [email protected] 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.
______________________________________________
[email protected] 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.