r语言 - 元素超过给定阈值的"xts"(矩阵)子集



考虑一个类似于以下内容的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

且不带 NA:

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

NA 不会选择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 的方法?

您可以在子集化时尝试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

最新更新