R 函数调用内部构造的GLM上的step/stepAIC

R 函数调用内部构造的GLM上的step/stepAIC,r,function,scope,R,Function,Scope,我遇到了与可见性/环境相关的问题。简而言之,无法使用step/stepAIC简化函数内部构造的GLM: foo = function(model) { m = glm(y~x, family=model$family, data = dframe) return(m) } y = rbinom(100, 1, 0.5) x = y*rnorm(100) + rnorm(100) dframe = data.frame(y, x) m = glm(y~x, family='binomia

我遇到了与可见性/环境相关的问题。简而言之,无法使用step/stepAIC简化函数内部构造的GLM:

foo = function(model) {
  m = glm(y~x, family=model$family, data = dframe)
  return(m)
}

y = rbinom(100, 1, 0.5)
x = y*rnorm(100) + rnorm(100)
dframe = data.frame(y, x)
m = glm(y~x, family='binomial', data = dframe)
m2 = foo(m)
library(MASS)
summary(m2)
print(m2$family)
m3 = stepAIC(m2, k = 2)
这将导致以下错误:

Error in glm(formula = y ~ 1, family = model$family, data = dframe) : 
  object 'model' not found

这看起来很合身,家庭也很明确。如果示例有点做作,那么很抱歉。

找到了解决方案-原始glm需要使用do.call构建

foo = function(model) {
  form.1<-as.formula(y ~ x)
  dat = model$data
  fam = model$family
  m <- do.call("glm", list(form.1, data=dat, family=fam))
  ##m = glm(y~x, family='binomial', data = model$dframe)
  return(m)
}

y = rbinom(100, 1, 0.5)
x = y*rnorm(100) + rnorm(100)
dframe = data.frame(y, x)
m = glm(y~x, family='binomial', data = dframe)
m2 = foo(m)
library(MASS)
summary(m2)
print(m2$family)
m3 = stepAIC(m2, k = 2)
foo=函数(模型){
表格1