[R] sliding window over a large vector
markleeds at verizon.net
markleeds at verizon.net
Tue Dec 16 10:25:23 CET 2008
Hi: Veslot: I'm too tired to even try to figure out why but I think
that there is something wrong with your sl function. see below for an
empirical
proof of that statement. OR maybe you're definition of sliding window
is different than rollapply's definition but rollapply's answer makes
more sense to me ?
Output
> set.seed(1)
> x <- rbinom(24, 1, 0.5)
> print(x)
[1] 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0
>
> xx1 <- sl(x,3)
> print(xx1)
[1] 1 1 2 2 1 2 2 2 2 1 1 1 2 1 2 1 2 2 1 2 2
>
> temp <- zoo(x)
> ans<-rollapply(temp,3,sum)
> print(ans)
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
1 2 2 2 2 3 3 2 1 0 1 1 2 1 2 2 2 2 2 2 2 1
On Tue, Dec 16, 2008 at 3:47 AM, Veslot Jacques wrote:
>> sl <- function(x,z) c(0,cumsum(diff(x)[1:(length(x)-z-1)])) +
>> rep(sum(x[1:z]),length(x)-z)
>> x <- rbinom(100000, 1, 0.5)
>> system.time(xx1 <- slide(x,12))
> utilisateur système écoulé 36.86 0.45
> 37.32
>> system.time(xx2 <- sl(x,12))
> utilisateur système écoulé 0.01 0.00
> 0.02
>> all.equal(xx1,xx2)
> [1] TRUE
>
> Jacques VESLOT
>
> CEMAGREF - UR Hydrobiologie
>
> Route de Cézanne - CS 40061 13182 AIX-EN-PROVENCE Cedex 5, France
>
> Tél. + 0033 04 42 66 99 76
> fax + 0033 04 42 66 99 34
> email jacques.veslot at cemagref.fr
>
>> -----Message d'origine-----
>> De : r-help-bounces at r-project.org
>> [mailto:r-help-bounces at r-project.org] De la part
>> de Chris Oldmeadow
>> Envoyé : mardi 16 décembre 2008 05:20
>> À : r-help at r-project.org
>> Objet : [R] sliding window over a large vector
>>
>> 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 at 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 at 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.
More information about the R-help
mailing list