3

我有一个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
4

1 回答 1

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)
于 2012-08-28T17:50:02.420 回答