Great, thanks for your help.  I tried:
x <- 1:10000
y <- lapply(1:10000,function(t){t*runmean(x,t,alg="fast",endrule="trim")})

and it worked in about 90 sec.

Thanks again,
Andy


On Fri, Apr 2, 2010 at 3:43 PM, Gabor Grothendieck
<ggrothendi...@gmail.com>wrote:

> There is also rollmean in the zoo package which might be slightly
> faster since its optimized for that operation.
> k * rollmean(x, k)
> e.g.
>
> > 2 * rollmean(1:4, 2)
> [1] 3 5 7
>
> will give a rolling sum. runmean in the caTools package is even faster.
>
> On Fri, Apr 2, 2010 at 2:31 PM, Jorge Ivan Velez
> <jorgeivanve...@gmail.com> wrote:
> > Hi Andy,
> >
> > Take a look at the rollapply function in the zoo package.
> >
> >> require(zoo)
> > Loading required package: zoo
> >> x <- 1:4
> >> rollapply(zoo(x), 1, sum)
> > 1 2 3 4
> > 1 2 3 4
> >> rollapply(zoo(x), 2, sum)
> > 1 2 3
> > 3 5 7
> >> rollapply(zoo(x), 3, sum)
> > 2 3
> > 6 9
> >> rollapply(zoo(x), 4, sum)
> >  2
> > 10
> >
> > # all at once
> > sapply(1:4, function(r) rollapply(zoo(x), r, sum))
> >
> >
> > HTH,
> > Jorge
> >
> >
> > On Fri, Apr 2, 2010 at 2:24 PM, Andy Rominger <> wrote:
> >
> >> Hello,
> >>
> >> I'd like to take all possible sub-summands of a vector in the quickest
> and
> >> most efficient way possible.  By "sub-summands" I mean for each
> sub-vector,
> >> take its sum.  Which is to say: if I had the vector
> >>
> >> x<-1:4
> >>
> >> I'd want the "sum" of x[1], x[2], etc.  And then the sum of x[1:2],
> x[2:3],
> >> etc.  And then...so on.
> >>
> >> The result would be:
> >> 1 2 3 4
> >> 2 5 7
> >> 6 9
> >> 10
> >>
> >> I can do this with for loops (code below) but for long vectors (10^6
> >> elements) looping takes more time than I'd like.  Any suggestions?
> >>
> >> Thanks very much in advance--
> >> Andy
> >>
> >>
> >> # calculate sums of all sub-vectors...
> >> x <- 1:4
> >>
> >> sub.vect <- vector("list",4)
> >>
> >> for(t in 1:4) {
> >>    maxi <- 4 - t + 1
> >>    this.sub <- numeric(maxi)
> >>    for(i in 1:maxi) {
> >>        this.sub[i] <- sum(x[i:(i+t-1)])
> >>    }
> >>    sub.vect[[t]] <- this.sub
> >> }
> >>
> >> sub.vect
> >>
> >>        [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help@r-project.org mailing list
> >> 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.
> >>
> >
> >        [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@r-project.org mailing list
> > 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.
> >
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
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