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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top