Message-ID: <3EBA1C34.1FE1477C@kfn.uni-hannover.de>
Date: 2003-05-08T08:58:29Z
From: Dirk Enzmann
Subject: Avoiding loops to spare time and memory
Is it possible to avoid the loop in the following function (or make the
function otherwise more efficient) and can someone point me to a
possible solution? (It would be great if hours could be reduced to
seconds :-).
# ---------------------------------------------
RanEigen=function(items=x,cases=y,sample=z)
{
X=matrix(rnorm(cases*items),nrow=cases,byrow=F)
S=crossprod(X-rep(1,cases) %*% t(colMeans(X)))
EV=eigen((1/sqrt(diag(S))*diag(items))%*%S%*%(1/sqrt(diag(S))*diag(items)),only.values=T)$values
for (i in 2:sample)
{
X=matrix(rnorm(cases*items),nrow=cases,byrow=F)
S=crossprod(X-rep(1,cases) %*% t(colMeans(X)))
EV=rbind(EV,eigen((1/sqrt(diag(S))*diag(items))%*%S%*%(1/sqrt(diag(S))*diag(items)),only.values=T)$values)
}
REigV=(cbind(1:items,colMeans(EV)))
REigV[,2]=as.numeric(formatC(REigV[,2],format="f",digits=7,flag="
",width=10))
colnames(REigV)=c(' ','Eigenvalue')
rownames(REigV)=rep('',items)
return(REigV)
}
# ---------------------------------------------
Thanks in advance,
Dirk
*************************************************
Dr. Dirk Enzmann
Criminological Research Institute of Lower Saxony
Luetzerodestr. 9
D-30161 Hannover
Germany
phone: +49-511-348.36.32
fax: +49-511-348.36.10
email: ENZMANN at KFN.uni-hannover.de
http://www.kfn.de