if you want the speed, you can simply build an fts time series from
it, then apply the moving.sum function and throw away the dates.

this will probably be the fastest implementation of rolling applies
out there unless you do a cumsum difference function.

I got a sample timing of 2 seconds on 12m length vector (see botttom of email).

library(fts)

your.data <- c(0,1,1,0,1,1,1,0,0,0,0,1,1,1,1)

## dates generated automatically
fake.fts <- fts(data=your.data)

answer.fts <- moving.sum(fake.fts,10)

## throw away dates
answer.as.vector <- as.numeric(answer.fts)


my timing:
> library(fts)
> big.fts <- fts(data=rep(1,12000000))
> system.time(ans.fts <- moving.sum(big.fts,20))
   user  system elapsed
  1.970   0.081   2.051
> nrow(big.fts)
[1] 12000000
> nrow(ans.fts)
[1] 11999981
>



-Whit


On Tue, Dec 16, 2008 at 9:12 AM, Gabor Grothendieck
<ggrothendi...@gmail.com> wrote:
> On Tue, Dec 16, 2008 at 8:23 AM, Gabor Grothendieck
> <ggrothendi...@gmail.com> wrote:
>> There seems to be something wrong:
>>
>>> slide(c(1, 1, 0, 1), 2)
>> [1] 2 2
>>
>> but the output should be c(2, 1, 2)
>
> That should be c(2, 1, 1)
>
>>
>> At any rate try this:
>>
>> library(zoo)
>> 3 * rollmean(x, 3)
>>
>>
>> On Mon, Dec 15, 2008 at 11:19 PM, Chris Oldmeadow
>> <c.oldmea...@student.qut.edu.au> wrote:
>>> Hi all,
>>>
>>> I have a very large binary vector, I wish to calculate the number of 1's
>>>  over sliding windows.
>>>
>>> this is my very slow function
>>>
>>> slide<-function(seq,window){
>>>  n<-length(seq)-window
>>>  tot<-c()
>>>  tot[1]<-sum(seq[1:window])    for (i in 2:n) {
>>>     tot[i]<- tot[i-1]-seq[i-1]+seq[i]
>>>  }
>>>  return(tot)
>>> }
>>>
>>> this works well for for reasonably sized vectors. Does anybody know a way
>>> for large vectors ( length=12 million), im trying to avoid using C.
>>>
>>> Thanks,
>>> Chris
>>>
>>> ______________________________________________
>>> 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.
>>>
>>
>
> ______________________________________________
> 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.
>

______________________________________________
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