【发布时间】:2015-11-08 20:32:26
【问题描述】:
我有一个 xts 对象,现在我想选择除某个时期之外的所有索引行。
我知道指定 my.object["2015/2015-03-01"] 会选择从 2015 年到 2015 年 3 月的索引行。但是如何根据相同的 xts 语法进行 is not 操作?
我试过my.object[!"2015/2015-03-01"],但它不起作用。
【问题讨论】:
我有一个 xts 对象,现在我想选择除某个时期之外的所有索引行。
我知道指定 my.object["2015/2015-03-01"] 会选择从 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],]
【讨论】:
which.i 是[.xts 的一个参数。 which 是一个函数。
x["2007-01-04/2007-06-28", w=TRUE]。