¿Por qué se implementa XTS como una matriz en lugar de un marco de datos?
Pregunta
He encontrado información sobre la representación de los campos de XTS en este Thread Pero todavía no estoy claro por qué XTS es un índice + una matriz. ¿Por qué no un índice + un marco de datos? ¿No permitiría eso más flexibilidad al trabajar con factores y columnas numéricas?
Una vez que he cargado datos en XTS, la mayor parte del trabajo consiste en realizar operaciones numéricas en un conjunto completo o un subconjunto de la serie temporal. Para esto, la indexación funciona muy bien, pero me veo obligado a hacer llamadas como data.frame(data.matrix(myxts))
poder extraer factores y columnas numéricas.
Además, encuentro más conveniente usar la notación $ que la indexación de matriz, aunque esta es realmente una pregunta diferente. Por ejemplo:
lm(myxts$Res ~ myxts$ThisVar + myxts$ThatVar)
es más fácil de escribir que
lm(myxts[, "Res"] ~ myxts[, "ThisVar"] + myxts[, "ThatVar"]).
Solución
XTS usa matriz en lugar de datos.
- Es una subclase del zoológico, y así es como se estructuran los objetos del zoológico y
- Los objetos de matriz tienen un rendimiento mucho mejor que los datos.
Su segunda pregunta podría resolverse utilizando el data=
argumentar lm
o, en general, mediante el uso with
:
with(myxts, lm(Res ~ ThisVar + ThatVar))