Hi All,

I'm writing a long code that takes long time to execute. So I used the
Rprof() function and found out that the function that takes about 80% of
the time is the incomb () fucntion (below), and this is most probably
because of the many explicit for() loops I'm using.

n=18;m=4;p=0.3;alpha=0.2;beta=2
x=c(3,0,0)
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)
   store1<-numeric(nrow(LED))
    h<- numeric(m-1)
    lm<- numeric(m-1)
     for (j in 1:length(store1) )
         {
            incomb<-function(x,alpha,beta) {

 g<-((-1)^(sum(LED[j,])))*(gamma((1/beta)+1))*((alpha)^(-(1/beta)))
                  for (i in 1:(m-1))  {
                       h[i]<- choose(x[i],LED[j,i])
                       }
                 ik<-prod(h)*choose((n-m-sum(x)),LED[j,m])
                for (i in 1:(m-1)) {
                       lm[i]<-(sum(LED[j,1:i])) + i
                     }
                plm<-prod(lm)
               gil<-g*ik/(plm)
             hlm<-numeric(sum(LED[j,])+(m-1))
             dsa<-length(hlm)
              for (i in 1:dsa)
                {
                 ppp<- sum(LED[j,])+(m-1)
                  hlm[i]<-
 (choose(ppp,i))*((-1)^(i))*((i+1)^((-1)*((1/beta)+1)))
                 }
          shl<-gil*(sum(hlm)+1)
          return (shl)
          }
       store1[j]<-incomb(x,alpha=0.2,beta=2)
      }


I'm trying to use alternatives (for ex. to vectorize things) to the
explicit for() loops, but things don't work out.

Any suggestions that can help me to speed up the execution of the incomb()
function are much appreciated.

Thanks a lot 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.

Reply via email to