在使用weights
参数时,在lapply
中调用lm
时,我遇到了一种奇怪的行为。
我的代码由一个公式列表组成,在其中运行线性模型,并在lapply
中调用。到目前为止,它一直在工作:
dd <- data.frame(y = rnorm(100),
x1 = rnorm(100),
x2 = rnorm(100),
x3 = rnorm(100),
x4 = rnorm(100),
wg = runif(100,1,100))
ls.form <- list(
formula(y~x1+x2),
formula(y~x3+x4),
formula(y~x1|x2|x3),
formula(y~x1+x2+x3+x4)
)
res.no.wg <- lapply(ls.form, lm, data = dd)
然而,当我添加weights
参数时,出现了奇怪的错误:
res.with.wg <- lapply(ls.form, lm, data = dd, weights = dd[,"wg"])
Error in eval(extras, data, env) :
..2 used in an incorrect context, no ... to look in
如果lapply
中的...
与lm
调用中的...
发生冲突,但这仅因为weights
参数。
您有什么想法是问题的原因以及如何解决?
注意:在没有lapply
的情况下使用该调用可以按预期工作:
lm(ls.form[[1]], data = dd, weights = dd[,"wg"] )
Call:
lm(formula = ls.form[[1]], data = dd, weights = dd[, "wg"])
Coefficients:
(Intercept) x1 x2
-0.12020 0.06049 -0.01937
编辑 最终调用是在一种类型的函数
内部执行的lapply
:
f1 <- function(samp, dat, wgt){
res.with.wg2 <- lapply(ls.form, function(x) {lm(formula = x, data=dat[samp,], weights=dat[samp,wgt])})
}
f1(1:66, dat=dd, wgt = "wg")
lm
。请参阅:https://stackoverflow.com/questions/38683076/ellipsis-trouble-passing-to-lm - John Paul