子集“xts”(矩阵),其中元素超过给定阈值

时间:2014-01-14 01:21:08

标签: r matrix xts subset

考虑类似于:

的xts矩阵
> x=xts(matrix(1:12, ncol=3), Sys.Date()+1:4  )
> x[1,]=NA
> x
           [,1] [,2] [,3]
2014-01-15   NA   NA   NA
2014-01-16    2    6   10
2014-01-17    3    7   11
2014-01-18    4    8   12

要获得超出的元素,比如4:

>   coredata(x)[x>4]
[1] NA NA  6  7  8 NA 10 11 12

没有NAs:

>    coredata(x)[!is.na(x) & x >4]
[1]  6  7  8 10 11 12

NAs不选择x中的元素,因此以下工作也不会使第一行无效:

>   coredata(x)[x>4]=0
> x
           [,1] [,2] [,3]
2014-01-15   NA   NA   NA
2014-01-16    2    0    0
2014-01-17    3    0    0
2014-01-18    4    0    0

问题是:当x很大或者是否有更多xts特定方法时,这种子集化方法是否有效?

1 个答案:

答案 0 :(得分:1)

您可以在子集化时尝试which=TRUE参数

x = xts(matrix(1:12, ncol = 3), Sys.Date() + 1:4)
x[1, ] = NA
x[x > 4, which = T]
## [1]  6  7  8 10 11 12