我正在尝试对dataframe中的两列执行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)但是,获取一个错误:
Error in FUN(data[posns], ...) : unused argument (data[posns])感谢您的帮助,指出我做错了什么。
发布于 2017-08-29 22:35:08
默认情况下,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 in tail(x, 1) .所以很难说R在哪里为x找到了一个值。https://stackoverflow.com/questions/45948686
复制相似问题