Domanda
Ragazzi, normalmente quando si fa qualcosa di simile:
tmp = zoo(rnorm(100), 1:100)
rollapply(tmp, 10, function(x) quantile(x, 0.05), align="right")
giustamente rollapply
inizierà il calcolo del valore del momento sono disponibili 10 elementi.
Purtroppo ho bisogno di qualcosa che usi come più dati possibile per il pugno di 10 osservazioni, in sostanza, una finestra crescente di dati finché non sono dati sufficienti per utilizzare una finestra scorrevole, per esempio 1, 1: 2, 1: 3, 1:. 4, ecc finché abbiamo almeno 10 elementi e quindi far scorrere la finestra come al solito
C'è un modo migliore per farlo che un brutto ciclo for?
Soluzione
Perché non solo pad della serie con 9 AN all'inizio? Sicuramente meglio di "brutto cicli for":
tmp = zoo(c(rep(NA,9), rnorm(100)), 1:109)
zoo(rollapply(tmp, 10, function(x) quantile(x, 0.05, na.rm = TRUE),
align="right"), 1:100)
Altri suggerimenti
rollapply
in zoo può farlo specificando partial=TRUE
, per es.
> library(zoo)
>
> rollapplyr(zoo(1:20), 3, sum, partial=TRUE)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57