rollapply 输出两列或更多列

标签 r xts

我正在尝试使用 rollapply 以便我只使用它一次,而不是多次使用然后合并结果。这个想法是我想从 xts 对象中获取多位数据。在下面的模拟示例中,我希望能够获得滑动窗口的总和和最大值。

require(xts)
v <- xts(rnorm(100),Sys.Date()-100:1)
rollapply(v,width=10,function(y){c(sum(y),max(y))})

这会导致以下错误...

Error in xts(xx, tt, if (by == 1) attr(data, "frequency")) : 
  NROW(x) must match length(order.by)

下面是我正在运行的 sessionInfo:

R version 2.15.2 (2012-10-26)
Platform: i386-apple-darwin9.8.0/i386 (32-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] xts_0.9-3 zoo_1.7-9

loaded via a namespace (and not attached):
[1] grid_2.15.2     lattice_0.20-10

我以为我之前已经弄明白了,但显然不是......

最佳答案

当输入只有一列时,这是当前实现的一个限制。您可以通过确保输入有多个列、设置 by.column=FALSE 并将您的函数调整为仅使用一列来解决此问题。

例如:

require(xts)
v <- xts(rnorm(10),Sys.Date()-10:1)
f <- function(y) c(sum=sum(y[,1]), max=max(y[,1]))
rollapply(merge(v,v), width=3, f, by.column=FALSE)

关于rollapply 输出两列或更多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300762/

相关文章:

Rollapply 和 xts。我可以输出窗口中最大值的时间吗?

从 XTS 中删除时间

r - 将模型应用于多个时间序列

r - 如何将条形图中的日期格式从值更改为日期

R 公式和结果系数名称

r - 如何在 R 中实现未观察到的组件模型?

r - 在 R 中转换单个单元格中的列

r - 如何使用 r 中的 ggplot2 和 gridExtra 包将一个 grob 对象排列在另一个对象中

mysql - "Too few parameters"尝试连接到 R 中的 Microsoft Access 数据库

r - 从 CSV 创建 xts 对象