[英]Subsetting an “xts” (matrix) with NAs
考慮以下xts對象x,y:
x=xts(matrix(1:12, ncol=3), Sys.Date()+1:4 )
x[1,]=NA
y=x
由於所有要素都是積極的:
> coredata(x)[x>0]
[1] NA 2 3 4 NA 6 7 8 NA 10 11 12
> coredata(y)[T]
[1] NA 2 3 4 NA 6 7 8 NA 10 11 12
為了進一步確認相似性,我們可以檢查:
> str(coredata(x)[x>0])
int [1:12] NA 2 3 4 NA 6 7 8 NA 10 ...
> class(coredata(x)[x>0])
[1] "integer"
> str(coredata(y)[T])
int [1:12] NA 2 3 4 NA 6 7 8 NA 10 ...
> class(coredata(y)[T])
[1] "integer"
無論如何,當涉及分配時,會有不同的行為
> coredata(x)[x>0]=0
> coredata(y)[T]=0
> x;y
[,1] [,2] [,3]
2014-01-15 NA NA NA
2014-01-16 0 0 0
2014-01-17 0 0 0
2014-01-18 0 0 0
[,1] [,2] [,3]
2014-01-15 0 0 0
2014-01-16 0 0 0
2014-01-17 0 0 0
2014-01-18 0 0 0
您能解釋為什么會有不同的行為嗎?
來自help("[")
:
索引中的NA
提取時,數字,邏輯或字符NA索引會選擇一個未知元素,因此會在邏輯,整數,數字,復數或字符結果的對應元素中返回NA,並且列表的值為NULL。 (它返回00以獲得原始結果。)
替換時(即在分配的lhs上使用索引),NA不選擇要替換的任何元素。 由於是否應使用rhs的某個元素存在歧義,因此僅當rhs值的長度為1時才允許這樣做(因此兩種解釋將具有相同的結果)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.