簡體   English   中英

用NA替換“ xts”(矩陣)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM