J'ai un xts de 1 et 0 indiquant un événement sur une date. Je voudrais avoir R boucle chaque vendredi dans l'index et voir s'il y a des 1 pour cette semaine. J'ai ceci:'Indice en dehors des limites.' dans period.apply
> this = xts(sample(c(0,1), replace=TRUE, size=10),
order.by = seq.Date(as.Date('1990-01-05'), by = 1, length.out=10))
> this
[,1]
1990-01-05 0
1990-01-06 1
1990-01-07 0
1990-01-08 0
1990-01-09 0
1990-01-10 0
1990-01-11 1
1990-01-12 0
1990-01-13 0
1990-01-14 0
> that = index(this)[.indexwday(this) == 5]
> that
[1] "1990-01-05" "1990-01-12"
> period.apply(this, INDEX=that, FUN=function(x) max(x))
Error in `[.xts`(x, (INDEX[y] + 1):INDEX[y + 1]) :
subscript out of bounds
Comme vous pouvez le voir, j'obtiens l'erreur. De l'aide?
EDIT:
Je compris l'erreur. 'INDEX' est censé être un numéro de vecteur ou de ligne, pas des dates. Cela fonctionne:
period.apply(this, INDEX=c(0, which(index(this) %in% that)), FUN=function(x) max(x))
Cependant, je suis bloqué sur le problème original. Je ne sais pas comment obtenir la première occurrence du 1 dans la série. J'ai essayé ceci:
> period.apply(this, INDEX=c(0, which(index(this) %in% that)), FUN=function(x) index(x)[min(which(x==1))])
[,1]
1990-01-05 7309
1990-01-12 7310
Mais je ne sais pas ce que c'est. Je devine que l'index ne passe pas par 'x' pour être passé à la fonction.
Des idées sur la façon de faire ce que je tente?