【发布时间】:2019-05-12 00:47:42
【问题描述】:
我正在尝试在向下滑动 xts 数据框的列的窗口上使用 rollapply 创建滚动计算。例如,假设我定义了一个 xts 对象:
df1 <- data.frame(A = c(1,2,3,4,5,6,7,8,9),
B = c(3,4,5,6,7,8,9,10,11))
dfxts <- xts(df1, order.by = as.Date(c(30,31,32,33,34,35,36,37,38)))
这给出了 xts 函数:
A B
1970-01-31 1 3
1970-02-01 2 4
1970-02-02 3 5
1970-02-03 4 6
1970-02-04 5 7
1970-02-05 6 8
1970-02-06 7 9
1970-02-07 8 10
1970-02-08 9 11
据我了解宽度参数,它定义了发生某些操作的滑动窗口的长度,例如,平均操作(虽然我不清楚“宽度”)。
假设我想在宽度为 3 的窗口上创建滚动操作,在每个位置添加窗口的第 2 和第 3 个元素。在窗口的每个位置,我想添加 x(2) + x(3)。我会得到:
A B
1970-01-31 NA NA
1970-02-01 NA NA
1970-02-02 5 9
1970-02-03 7 11
1970-02-04 9 13
1970-02-05 11 15
1970-02-06 13 17
1970-02-07 15 19
1970-02-08 17 21
我尝试通过以下方式实现:
rollapply(dfxts, width = 3, FUN=function(x) x(2)+x(3), align = "right")
我得到了错误:
“总结时出错:找不到函数“x”
我想我误解了如何使用 rollapply,如何实现匿名函数,或两者兼而有之。
【问题讨论】: