如何使用 rollapply 函数从 xts 对象构建多个滑动窗口

问题描述 投票:0回答:1

我有一个包含两列的矩阵,其中每列都是一个变量。我正在建造两个尺寸为 3 的滑动窗

data <- matrix(1:20,ncol = 2, dimnames = list(NULL, c("var1","var2")))
> data
      var1 var2
 [1,]    1   11
 [2,]    2   12
 [3,]    3   13
 [4,]    4   14
 [5,]    5   15
 [6,]    6   16
 [7,]    7   17
 [8,]    8   18
 [9,]    9   19
[10,]   10   20

> rollapplyr(data, 3, c)

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3   11   12   13
[2,]    2    3    4   12   13   14
[3,]    3    4    5   13   14   15
[4,]    4    5    6   14   15   16
[5,]    5    6    7   15   16   17
[6,]    6    7    8   16   17   18
[7,]    7    8    9   17   18   19
[8,]    8    9   10   18   19   20

但是当我尝试对 xtc 对象执行相同操作时,我收到错误

library(xts)
 data_xts <- xts(data, Sys.time()+1:10)
 rollapplyr(data_xts, 3, c)

Error in array(ans, c(len.a%/%d2, d.ans), if (!is.null(names(dn.ans)) ||  : 
  length of 'dimnames' [1] not equal to array extent
xts zoo rollapply
1个回答
0
投票
rollapplyr(zoo(data_xts), 3, c)

根据您的示例产生预期的行为。

© www.soinside.com 2019 - 2024. All rights reserved.