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.ves...@cemagref.fr
-----Message d'origine-----
De : r-help-boun...@r-project.org
[mailto:r-help-boun...@r-project.org] De la part
de Chris Oldmeadow
Envoyé : mardi 16 décembre 2008 05:20
À : r-help@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@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.