R:roll应用于两个变量

R:roll应用于两个变量,r,xts,R,Xts,我试图在数据帧中的两列上执行rollapply 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

我试图在数据帧中的两列上执行rollapply

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)

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

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

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

dcalc1那么这个问题很可能与您的函数有关,因为一个简单的例子可以工作:
data(sample_matrix);谢谢你的解释。
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)