R:滚动应用两个变量

R: rollapply on two variables

我正在尝试对数据框中的两列进行滚动应用

library(xts)
library("dLagM")

data(warming)
fdlm1 <- function(){
model.ardl = ardlDlm(x = warming$NoMotorVehicles, y = warming$Warming, p = 1 , q = 1 , show.summary = FALSE)

fc <- ardlDlmForecast(model = model.ardl , x = tail(x,1) , h =1)$forecasts
fc
return(fc)}

dcalc1 <- rollapply(warming,18,fdlm1)

但是出现错误:

Error in FUN(data[posns], ...) : unused argument (data[posns])

感谢您帮助指出我做错了什么。

默认情况下,rollapply 分别对数据的每一列调用该函数。如果您希望该函数可以访问多个列,则需要设置 by.column = FALSE

dcalc1 <- rollapply(warming, 18, fdlm1, by.column = FALSE)

这个简单的例子有效:

data(sample_matrix)
x <- as.xts(sample_matrix)
r <- rollapply(x, 40, function(d) coef(lm(Close ~ Open, data=d)), by.column=FALSE)

如果您仍然有问题,那么我会解决我在您的函数中看到的两个问题:

  1. 您应该通过参数而不是通过参数将对象传递给您的函数 依靠范围界定来找到它们,并且
  2. x in tail(x, 1) 未在函数范围内定义...因此很难说 R 在哪里找到 x.
  3. 的值