2012-05-09 58 views
5

我使用的是最新版本的Windows R/XTS /動物園如下:R 2.15,XTS 0.8-6,動物園1.7-7動物園/ xts - 無法對單細胞子集進行數學計算? [R掛

我看到下面的怪異行爲,這是不符合的情況下以前的版本:

library(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix) 

sample.xts[1, 2] - sample.xts[2,2]  # results in numeric(0)?!?!?! 
(sample.xts[ 1, 2] - sample.xts[2,2])/sample.xts[3,1] # if I run this twice R locks up 

在這裏我有一個XTS對象的子集到單個單元格。減法不再有效。此外,分裂導致R完全鎖定。

有沒有其他人看到這個?這是一個已知的錯誤還是我錯過了什麼?我可以在兩臺機器上重現這一點。

會議信息(刪除保密了幾包):

R version 2.15.0 (2012-03-30) 
Platform: x86_64-pc-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] parallel stats  graphics utils  datasets grDevices methods base  
+0

順便說一句,我認爲這與子集操作返回一個動物園/ xts對象而不是命名數字有關。也許這個曾經爲我工作,因爲我的環境設置,使得'['被另一個包裹劫持?反正,不解釋崩潰! – SFun28

+0

'sessionInfo'的輸出可能有助於確定過去爲什麼這會起作用。此外,「掛起」或「鎖定」與碰撞不同。在崩潰中,程序終止。無論如何,這種行爲是不可取的。 –

+0

您對於碰撞v。hang是正確的。我正在戲劇化。 =)我更新了標題。感謝關於sessionInfo()的提示! – SFun28

回答

2

你永遠不能減去XTS /動物園對象與非重疊指數。在執行操作之前,算術運算總是合併。您需要使用coredata才能進行減法,以提供您期望的結果。

coredata(sample.xts[1,2]) - coredata(sample.xts[2,2]) 

我可以複製第二個問題,但我不知道這應該是一個高優先級來解決,因爲它不適合動物園/ XTS成語,並會導致完全是空的XTS對象。如果(某些)索引對齊,一切都很好。

(sample.xts[1,2] - sample.xts[1,3])/sample.xts[1,4] 
(sample.xts[2,2] - sample.xts[1:2,3])/sample.xts[2:3,4] 
+0

我認爲這在過去是適用於我的,因爲我的包函數通過[。將xts對象轉換爲命名數字。我認爲是這種情況,因爲這個函數找不到[.zoo並且回退到普通舊矩陣[。所以有關我的環境的一些事情必須改變,以便我的包函數現在可以找到[.zoo。那有意義嗎? – SFun28

+0

@JoshuaUlrich:似乎應該報告錯誤,而不是導致似乎需要重新啓動的「掛起」,並且基本上是「崩潰等效」。 –

+0

@DWin:我知道,我知道。但我更願意說,「那麼不要這樣做。」 –