> 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 [email protected]
>-----Message d'origine-----
>De : [email protected] [mailto:[email protected]] De la
>part
>de Chris Oldmeadow
>Envoyé : mardi 16 décembre 2008 05:20
>À : [email protected]
>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
>
>______________________________________________
>[email protected] 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.
______________________________________________
[email protected] 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.