Error al llamar a `lm` en un` lapply` con argumento de `ponderaciones`
He encontrado un comportamiento extraño al llamarlm
Dentro de unlapply
utilizando laweights
argumento.
Mi código consiste en una lista de fórmulas en las que ejecuto un modelo lineal al que llamolapply
. Hasta ahora estaba funcionando:
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)
Sin embargo, cuando agrego elweights
argumento, me sale un error extraño:
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
Es como si el...
delapply
estaba en conflicto con el...
dellm
llamar pero solo por elweights
argumento.
¿Alguna idea fue la causa de este problema y cómo solucionarlo?
NOTA: usar la llamada sin ellapply
funciona como se esperaba:
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
EDITAR La última llamada es unlapply
Dentro de unfunction
del tipo:
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")