Perché XTS è implementato come matrice anziché come un frame di dati?

StackOverflow https://stackoverflow.com/questions/8862951

  •  28-10-2019
  •  | 
  •  

Domanda

Ho trovato alcune informazioni sulla rappresentazione dei campi XTS questo Discussione ma non sono ancora chiaro perché XTS sia un indice + una matrice. Perché non un indice + un frame di dati? Ciò non consentirebbe una maggiore flessibilità quando si lavora con fattori e colonne numeriche?

Una volta caricato i dati in XTS, la maggior parte del lavoro consiste nell'esecuzione di operazioni numeriche su un set completo o un sottoinsieme delle serie temporali. Per questo l'indicizzazione funziona molto bene, ma sono costretto a effettuare chiamate come data.frame(data.matrix(myxts)) essere in grado di estrarre fattori e colonne numeriche.

Inoltre, trovo più conveniente usare la notazione $ rispetto all'indicizzazione Matrix, sebbene questa sia davvero una domanda diversa. Per esempio:

lm(myxts$Res ~ myxts$ThisVar + myxts$ThatVar)

è più facile da scrivere che

lm(myxts[, "Res"] ~ myxts[, "ThisVar"] + myxts[, "ThatVar"]).
È stato utile?

Soluzione

XTS utilizza la matrice anziché data.rame perché:

  1. È una sottoclasse di zoo, ed è così che gli oggetti dello zoo sono strutturati e
  2. Gli oggetti Matrix hanno prestazioni molto migliori di Data.Frame.

La tua seconda domanda potrebbe essere risolta usando il data= argomento a lm o, più in generale, usando with:

with(myxts, lm(Res ~ ThisVar + ThatVar))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top