计算“xts”对象列表的范围

时间:2011-09-26 16:28:28

标签: r date xts

R中,我有一个xts个对象的列表,我想计算列表中所有项目的时间索引范围。我找不到顺利的方法来做它,它不断丢失对象的类和&成为原始数字向量。

例如(我的列表名为states,它由GMT POSIXct编制索引):

> c(min(sapply(states, start)), max(sapply(states, end)))
[1] 1252714110 1315785360

> range(sapply(states, function(x) range(index(x))))
[1] 1252714110 1315785360

将这些转换回POSIXct会很麻烦,我这样做是这样的:

minmax <- range(sapply(states, function(x) range(index(x))))
epoch <-   as.POSIXct(0, origin="1970-01-01", tz="GMT")
rg <- as.POSIXct(minmax, origin="1970-01-01", tz="GMT")

建议赞赏!

1 个答案:

答案 0 :(得分:1)

使用lapply查找每个列表元素的索引范围。然后使用do.call查找列表的范围:

do.call(range, lapply(states, function(x) range(index(x))))

或者,如果您更喜欢功能范例:

Reduce(range, Map(function(x) range(index(x)), states))

sapply不起作用,因为简化过程将输出转换为具有单一类型的原子向量或矩阵:NULL&lt;原始&lt;逻辑&lt;整数&lt;真实&lt;复杂&lt;字符&lt;列表&lt;表达式,按优先顺序排列。