2013-02-20 82 views
4

當我使用帶有xts對象的索引矩陣時,我得到了令人驚訝的結果。見下文。做/應該索引矩陣與xts對象一起使用嗎?

如果我將x強制轉換爲矩陣(不出所料),它可以按預期工作。

感謝您的任何幫助。

> data(sample_matrix) 
> x<- as.xts(sample_matrix) 
> i<- matrix(1:4, 2, 2, byrow=T) 
> i 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 
> head(x) 
       Open  High  Low Close 
2007-01-02 50.03978 50.11778 49.95041 50.11778 
2007-01-03 50.23050 50.42188 50.23050 50.39767 
2007-01-04 50.42096 50.42096 50.26414 50.33236 
2007-01-05 50.37347 50.37347 50.22103 50.33459 
2007-01-06 50.24433 50.24433 50.11121 50.18112 
2007-01-07 50.13211 50.21561 49.99185 49.99185 
> x[i]<- NA 
> head(x) 
       Open  High  Low Close 
2007-01-02  NA 50.11778 49.95041 50.11778 
2007-01-03  NA 50.42188 50.23050 50.39767 
2007-01-04  NA 50.42096 50.26414 50.33236 
2007-01-05  NA 50.37347 50.22103 50.33459 
2007-01-06 50.24433 50.24433 50.11121 50.18112 
2007-01-07 50.13211 50.21561 49.99185 49.99185 
+1

看着''''。[.xts''',它並不聲稱支持索引矩陣。 – mnel 2013-02-20 03:22:23

+0

謝謝mnel - 我沒看過那個頁面。我真正的問題是,我想分配給子集,而不是提取它。我能想到的最佳解決方法是將我的時間序列強制轉換爲矩陣,執行分配並將其重新轉換爲xts對象。 – user1871635 2013-02-20 03:31:28

+0

我相信你最終會在這裏得到回覆,至少有一個'xts'作者是一個普通的SO參加者。 – mnel 2013-02-20 03:51:12

回答

3

我有一個解決方法。取而代之的

x[i]<- NA 

使用coredata:

> coredata(x)[i]<- NA 
> head(x) 
       Open  High  Low Close 
2007-01-02 50.03978  NA 49.95041 50.11778 
2007-01-03 50.23050 50.42188 50.23050 50.39767 
2007-01-04 50.42096 50.42096 50.26414  NA 
2007-01-05 50.37347 50.37347 50.22103 50.33459 
2007-01-06 50.24433 50.24433 50.11121 50.18112 
2007-01-07 50.13211 50.21561 49.99185 49.99185 

儘管它仍然在我看來,(初學者),其XTS是做錯誤的事情在原代碼。

相關問題