解决方案是使用
with(data=imp2, exp=glm((hyp==2)~bmi+chl, family=binomial , subset=(age==1) ))
(我认为)您的问题中的问题是函数...
内的使用glm.mids
。它们在函数参数中使用以允许“传递给 glm 的附加参数”。但是,当...
传递给函数中的glm
调用时,glm.mids
它们不会以这种方式处理。在?glm
“...
对于 glm:如果不直接提供,则用于形成默认控制参数的参数。”。所以额外的论点将不起作用。
要看到这一点,请简化函数
f1 <- function (formula, family = binomial, data, ...)
{
glm(formula, family = family, data = data, ...)
}
f1(formula=((hyp==2)~bmi+chl), data=nhanes, subset=(age==2))
#Error in eval(expr, envir, enclos) :
# ..1 used in an incorrect context, no ... to look in
所以子集参数不会传递给glm
函数调用
使用 R 的答案:在 R 函数中将参数传递给 glm我们可以稍微改变函数
f2 <- function (formula, family = binomial, data, ...)
{
eval(substitute(glm(formula, family = family, data = data, ...)))
}
# This now runs
f2(formula=((hyp==2)~bmi+chl), data=nhanes, subset=(age==2))
# check
glm((hyp==2)~bmi+chl, data=nhanes, family="binomial", subset=(age==2))
的使用substitute
将替换函数环境中的参数(这需要更多细节 - 请随时更新)