HI R-experts, 

I am trying to speed up my calculation of the A results below and replace the 
for loop withsome functionals like lapply.  After manyreadings, trial and 
error, I still have no success.  Would anyone please give me some hints onthat? 
 

Thank you in advance.

Anne 


The program is this, I have a complicated function and itneeds to operate on 
some subsets of a dataset many times, depending on thevalues of group.  I 
simplify the functionand dataset for this example run.  

getResult <- function(d) {

      #examplefunction

     weighted.mean(x=d[,1], w=d[,2]) 

}


 
#example data setup

n=20; 

set.seed(1)

g=rep(1:5,each=4)

df=as.data.frame(cbind( sort(rnorm(mean=15,sd=10, n)),runif(n), rbinom(n, 1, 
0.4) , g )); df

getResult(df)

i0=c(1,2,4,5,5)

ng= length(unique(g))


 
#initiation of result matrix

A=matrix(Inf, ng, ng); A

for(i in 1:ng) 

{              cat("i:",i,"")

                for(jin i0[i]:ng) {

                                ok= !is.na(match(g,i:j)); cat("j:",j,"\n"); 

                                A[i,j]=getResult(d=df[ok,])

                } #endfor (j)

} #end for (i)

Is there an elegant way to remove the for loop here?  I try to make it flat for 
faster run but Icannot figure out how to subset the observations faster without 
error to apply the functiongetResult.  Any hint is appreciated.


 

 
on another note, is there a more elegant way to initiate the list as follows?

mylist=list(); w=rep(4,5)

for (i in 1:5) mylist[[i]]=w[i:5]


 

        [[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