[R] help with script

Gabor Grothendieck ggrothendieck at gmail.com
Thu Oct 5 08:20:30 CEST 2006


On 10/4/06, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> Also see package caTools.
>
> On 10/4/06, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> > See:
> >
> > http://tolstoy.newcastle.edu.au/R/help/04/10/5161.html
> >
> > On 10/4/06, JOHN VOIKLIS <voiklis at gmail.com> wrote:
> > > Hello,
> > >
> > > I wrote the function, below, in the hope of _quickly_ generating a
> > > sliding-window time series of the mean, sd, median, and mad values
> > > from a matrix of data. The script below is anything but quick; it has
> > > been working away on a 2500 x 2500 matrix with a sliding window of 100
> > > x 100 for five days, with no end in sight. Obviously, I am not the
> > > best of programmers. Can anyone offer suggestions as to how I might
> > > optimize this script.
> > >
> > > Thank you,
> > >
> > > John
> > >
> > > common.ground<-function(inMatrix,window){
> > >
> > >        cleanMatrix<-as.matrix(inMatrix)
> > >        diag(cleanMatrix)<-NA
> > >        outMatrix<-matrix(0,dim(inMatrix)[1]-window,4)
> > >        colnames(outMatrix)<-c("mean","SD", "median","mad")
> > >
> > >        for(i in 1:dim(outMatrix)[1]){
> > >                for(j in window:dim(cleanMatrix)[2]){
> > >                        outMatrix[i,1]<-mean(cleanMatrix[c(i:j),c(i:j)],na.rm=TRUE)
> > >                        outMatrix[i,2]<-sd(c(cleanMatrix[c(i:j),c(i:j)]),na.rm=TRUE)
> > >                        outMatrix[i,3]<-median(cleanMatrix[c(i:j),c(i:j)],na.rm=TRUE)
> > >                        outMatrix[i,4]<-mad(cleanMatrix[c(i:j),c(i:j)],na.rm=TRUE)
> > >                }
> > >        }
> > >        return(outMatrix)
> > > }

Also you could look at rollmax, rollmean and rollmedian in the zoo package.
rollapply in zoo with FUN = sd could be used for the sd.



More information about the R-help mailing list