william ritchie wrote:

Hi everyone,

 I ve been using R for months and find it really
practical and straight forward.
However (the inevitable however), I am finding it very
slow for one of my operations:
it s basically an itertation over i and j in a pretty
big table (4* 4608). It takes 30 minutes!!!!

Thanks

There was a suggestion to use C or Fortran, but in your particular case it looks like you can choose a simpler way to get more performance (even if not that much as in C) by vectorizing a bit more, see below.




Ps:if it can help here is the source:

median1<-matrix(nrow=4608,ncol=1)
median2<-matrix(nrow=4608,ncol=1)
median3<-matrix(nrow=4608,ncol=1)
median4<-matrix(nrow=4608,ncol=1)
v<-c(18,19,20,21,23)
for (i in 0:11)
{
for (j in 1:384)
{ median1[j+(i*384),]<-puce[j+(i*384),5]+median(puce[v+384*i,2]-puce[v+384*i,5])
median2[j+(i*384),]<-puce[j+(i*384),19]+median(puce[v+384*i,16]-puce[v+384*i,19])
median3[j+(i*384),]<-puce[j+(i*384),12]+median(puce[v+384*i,9]-puce[v+384*i,12])
median4[j+(i*384),]<-puce[j+(i*384),26]+median(puce[v+384*i,23]-puce[v+384*i,26])
puce[,5]<-median1
puce[,19]<-median2
puce[,12]<-median3
puce[,26]<-median4



} }


The obvious (well, I haven't tried) *first* step (I don't want to rewrite your code here!) is, e.g.,


median1 <- median2 <- median3 <- median4 <- numeric(4608) v <- c(18,19,20,21,23) for (i in 0:11) { j <- 1:384 median1[j+(i*384)]<-puce[j+(i*384),5]+median(puce[v+384*i,2]-puce[v+384*i,5]) median2[j+(i*384)]<-puce[j+(i*384),19]+median(puce[v+384*i,16]-puce[v+384*i,19]) median3[j+(i*384)]<-puce[j+(i*384),12]+median(puce[v+384*i,9]-puce[v+384*i,12]) median4[j+(i*384)]<-puce[j+(i*384),26]+median(puce[v+384*i,23]-puce[v+384*i,26]) } puce[,5]<-median1 puce[,19]<-median2 puce[,12]<-median3 puce[,26]<-median4


Uwe Ligges


______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to