如何根据 [is not] 条件对 xts 对象进行子集化

How to subset xts object based upon [is not] condition

我有一个 xts 对象,现在我想 select 除了特定时间段之外的所有索引行。

我知道指定 my.object["2015/2015-03-01"] 会 select 从 2015 年到 2015 年 3 月的索引行。但是我怎样才能基于相同的 xts 语法进行 is not 操作?

我已经尝试了 my.object[!"2015/2015-03-01"] 但它不起作用。

我不确定您为什么会期望 my.object[!"2015/2015-03-01"] 起作用。将逻辑函数应用于字符串没有意义。

无论如何,实现您想要的一种方法是使用 which.i 参数 [.xts 来查找整数索引。然后,您可以在对 [.xts.

的另一个调用中使用否定 i 从 xts 对象中删除这些观察结果
R> require(xts)
R> data(sample_matrix)
R> x <- as.xts(sample_matrix)
R> unwantedObs <- x["2007-01-04/2007-06-28", which.i=TRUE]
R> x[-unwantedObs,]
               Open     High      Low    Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.23050 50.42188 50.23050 50.39767
2007-06-29 47.63629 47.77563 47.61733 47.66471
2007-06-30 47.67468 47.94127 47.67468 47.76719
R> # in one line:
R> #x[-x["2007-01-04/2007-06-28", which.i=TRUE],]