je la certaines données objet de d'un échantillon:Faire face à appliquer des fonctions d'objets XTS dans R
dates <- seq.Date(from = as.Date("2010-01-01", format = "%Y-%m-%d"),
to = as.Date("2013-12-01", format = "%Y-%m-%d"), by = "month")
sample_data <- cbind(1:length(dates),length(dates):1)
xts_object <- xts(x = sample_data, order.by = dates)
J'utilise ensuite apply.yearly dessus avec la fonction cumsum:
apply.yearly(x = xts_object, FUN = cumsum)
La sortie est une matrice transposée, ce qui n'est pas ce que je l'ai initialement prévu de renvoyer.
je me attends à l'extrait ci-dessus pour retourner la même sortie que:
rbind(apply(X = xts_object[1:12],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[13:24],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[25:36],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[37:48],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[49:60],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[61:72],MARGIN = 2,FUN = cumsum),
apply(X = xts_object[73:84],MARGIN = 2,FUN = cumsum))
Le problème avec l'utilisation appliquer est qu'il retourne une matrice et non un objet XTS. Bien que je puisse résoudre ceci en utilisant as.xts, j'aimerais savoir s'il y a quelque chose qui me manque ou si j'utilise apply.yearly incorrectement. En utilisant l'application pure semble être plus enclin à attraper les erreurs et les bugs.
'apply' renvoie toujours un' matrix' si vous utilisez ' xts' ou 'data.frame' – akrun
Il suffit d'utiliser' reclass() 'pour le rendre' xts': 'reclass (apply (X = xts_object, MARGIN = 2, FUN = cumsum), match.to = xts_object)' – Rime
La sortie de votre appel 'apply' ne réinitialise pas la somme cumulative chaque année. C'est la même chose que d'appeler 'cumsum (xts_object)'. 'apply.yearly' devrait également réinitialiser la somme cumulative chaque année. –