sliding window over a large vector
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.