period.apply在xts中返回超过1的值

时间:2012-08-28 17:35:34

标签: r time-series xts zoo

我有一个xts对象,我正在尝试使用period.apply函数,该函数会为每个非重叠句点返回多个值。例如:我运行回归并希望返回每个非重叠时段的残差,因此我的函数返回该时段的所有日期以及每个特定日期的残差。目前似乎xts不支持此行为。它是否正确?有工作吗?

> df <- data.frame(x=rnorm(31)+10, y=rnorm(31)+10)
> xts.data <- xts(df, order.by=as.Date(13514:(13544),origin="1970-01-01"))
> f <- function(d) {as.numeric(coredata(d[,"x"]))}
> period.apply(xts.data, INDEX=endpoints(xts.data,"weeks"), FUN=f)
Error in coredata.xts(x) : currently unsupported data type

1 个答案:

答案 0 :(得分:3)

我刚刚想到,问题很可能是每个非重叠时段的观测数量都不相同,因此无法轻易创建类似矩阵的结构。

使用类似的东西,并注意每个列表元素的长度不同:

lapply(split(xts.data,"weeks"), f)

说明period.apply每个句点如何返回多个列:

period.apply(xts.data, endpoints(xts.data,"weeks"), range)
period.apply(xts.data, endpoints(xts.data,"weeks"), colMeans)