首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:对两个变量应用rollapply

R:对两个变量应用rollapply
EN

Stack Overflow用户
提问于 2017-08-29 21:37:06
回答 1查看 1.2K关注 0票数 3

我正在尝试对dataframe中的两列执行rollapply操作。

代码语言:javascript
复制
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)

但是,获取一个错误:

代码语言:javascript
复制
Error in FUN(data[posns], ...) : unused argument (data[posns])

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-29 22:35:08

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

代码语言:javascript
复制
dcalc1 <- rollapply(warming, 18, fdlm1, by.column = FALSE)

这个简单的例子奏效了:

代码语言:javascript
复制
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找到了一个值。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45948686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档