2012-01-14 47 views
3

我發現了一些關於this線程中xts字段表示的信息,但我仍不清楚爲什麼xts是索引+矩陣。爲什麼不是索引+數據框?在使用因子和數字列時,這不會讓您有更大的靈活性嗎?爲什麼將xts實現爲矩陣而不是數據框?

一旦我將數據加載到文本文件中,大部分工作就是對全套或時間序列的子集執行數字操作。爲此,索引工作得很好,但我不得不通過諸如data.frame(data.matrix(myxts))之類的調用來提取因子和數字列。

另外我發現使用$符號比矩陣索引更方便,雖然這是一個非常不同的問題。例如:

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

是很容易,

lm(myxts[, "Res"] ~ myxts[, "ThisVar"] + myxts[, "ThatVar"]). 

回答

6

XTS寫使用矩陣而非data.frame因爲:

  1. 它是動物園的一個子類,這是動物園如何對象是結構化的,並且
  2. 矩陣對象比data.frames有更好的性能。

你的第二個問題可以通過使用data=參數lm或更一般地,可以解決使用with

with(myxts, lm(Res ~ ThisVar + ThatVar)) 
+0

這個回答我的問題,而是如何昂貴是data.matrix()調用處理數字?它是否不能達到在字符串中使用字符矩陣與數據框的目的,從而獲得更好的性能? – 2012-01-14 15:27:12

+0

我在撓我的腦袋。矩陣(任何類型)中都沒有因子變量,因爲矩陣對象會除去名稱和維度之外的所有屬性。我相信你錯過了Joshua所做的一點:你不需要在xts對象周圍包裝任何'data.frame'或'data.matrix'來將它的數值變成'lm',當它使用'與'或作爲數據參數傳遞給'lm'。 – 2012-01-14 15:37:10

+3

另外'動物園'被設計爲一個增強的ts類(在R的核心),而這個類又是基於矩陣的。看動物園設計小插曲:http://cran.r-project.org/web/packages/zoo/vignettes/zoo-design.pdf。請注意動物園支持'$'。例如'庫(動物園); z < - zoo(cbind(a = 1:3,b = 4:6)); z $ a'。順便說一下,矩陣和數據幀之間的性能差異非常顯着。 – 2012-01-14 15:42:59

相關問題