我编写了一个小函数来运行具有不同滞后的多个单变量回归:
f <- function(x,l) {
lm.obj <- dynlm(GNP~L(get(as.character(x)),l),
data=longley)
names(lm.obj$coefficients)[2] <- paste(x,l,sep=".")
return(lm.obj)
}
mlply
在使用 .创建可能的滞后变量组合的框架之后,这非常有效expand.grid
。longley
使用包中的数据集的可重现示例datasets
如下所示:
data(longley)
require(plyr)
vars <- expand.grid(x=names(longley)[-c(1:3)],l=1:3)
regressionList <- mlply(vars,f, .progress= "text")
summaries <- lapply(regressionList,summary)
这工作得很好。但是现在我尝试使用 gls 做同样的事情。
require(nlme)
f.gls <- function(x,l) {
gls.obj <- gls(GNP~lag(get(as.character(x)),-l),
data=longley)
names(gls.obj$coefficients)[2] <- paste(x,l,sep=".")
return(gls.obj)
}
但我得到的只是这个错误:
Error in eval(expr, envir, enclos) : object 'x' not found
我尝试使用debug()
,但里面的一切似乎都一样。我也尝试在外面调用该函数,mlply
但它不起作用。也尝试过没有滞后。只是找不到 x。