我正在尝试在数据框中的两列上滚动应用
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)
如果您仍然有问题,那么我将解决您的函数遇到的两个问题:
您应该通过参数而不是参数将对象传递给函数
依靠作用域来找到它们,以及
x
中的tail(x, 1)
没有在函数范围中定义...因此很难说R在哪里找到x
的值。