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.

Reply via email to