2012-01-04 105 views
2

爲什麼在查詢日期時我不能在xts對象中使用&運算符? 例如,這些將工作:R:xts複雜查詢

myts[myts$Symbol == "AAPL" & myts$Size > 100, c("Symbol", "Size")] 
myts['2011-09-21', c("Symbol", "Size")] 

但這和條件上的日期/時間查詢將行不通:

myts[myts$Symbol == "AAPL" & '2011-09-21', c("Symbol", "Size")] 
Error in `&.default`("2011-09-21", myts$Symbol == "AAPL") : 
    operations are possible only for numeric, logical or complex types 

回答

3

"2011-09-21"不是一個合乎邏輯的載體,不能強制轉換爲邏輯向量。詳情請參閱?"&"

xts'ISO-8601風格子集是好的,但我們沒有辦法改變.Primitive("&")的行爲。你可以做這樣的事情,雖然:

myts[myts$Symbol == "AAPL" & index(myts) == as.POSIXct("2011-09-21"),] 
+0

有另一種方式來查詢兩個時間索引和一些列內容的XTS對象? – 2012-01-04 23:05:36

+0

幾乎在那裏。這在我需要的日期並不完全匹配,而是「grep」所有行的「2011-09-21」。我有多個日期相同但時間不同的行。 – 2012-01-04 23:10:52

+0

@RobertKubrick:那麼你可以做一些像'as.Date(index(x),tz =「America/Chicago」)==「2011-09-21」',但一定要考慮時區。 – 2012-01-05 01:43:24

3

另一種方式來解決這個使用雙索引:

myts[myts$Symbol == "AAPL"]['2011-09-21']