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