有没有一种方法可以捕获R中glm函数中的变量?

有没有一种方法可以捕获R中glm函数中的变量?,r,R,我想将建模中使用的指标变量存储到向量中,以便在函数中使用它们。目标是使用创建的函数来适应多个模型。我试了如下,但似乎没有得到它的权利 # Load data (from gtsummary package) data(trial, package = "gtsummary") # Specify the covariates indicatorvars <- c("trt", "grade") # Function model

我想将建模中使用的指标变量存储到向量中,以便在函数中使用它们。目标是使用创建的函数来适应多个模型。我试了如下,但似乎没有得到它的权利

# Load data (from gtsummary package)
data(trial, package = "gtsummary")

# Specify the covariates
indicatorvars <- c("trt", "grade")

# Function
modelfunc <- function(outcome, covarates) {
  glm({{outcome}} ~ {{covarates}},
      data = trial, family = binomial)

}

modelfunc("response" , "indiatorvars")

# This one works
#glm(response ~ trt + grade, data = trial, family = binomial)
#加载数据(来自gtsummary软件包)
数据(试验,包=“gtsummary”)
#指定协变量

指示符号在使用
as.formula
转换公式之前,可以先将公式构建为字符串。因此,函数将如下所示:

modelfunc调用:glm(公式=as.formula(form),family=二项式,data=试验)
#> 
#>系数:
#>(拦截)trtDrug B二级、三级
#>    -0.87870      0.19435     -0.06473      0.08217  
#> 
#>自由度:总共192个(即零);189剩余
#>(7因缺失而删除的观察结果)
#>零偏差:240.8
#>剩余偏差:240.3 AIC:248.3
由(v2.0.0)于2021年4月27日创建

我还不喜欢这个解决方案的一点是,这个电话的信息量不大。因此,我会稍微调整功能:

modelfunc系数:
#>(拦截)trtDrug B二级、三级
#>    -0.87870      0.19435     -0.06473      0.08217  
#> 
#>自由度:总共192个(即零);189剩余
#>(7因缺失而删除的观察结果)
#>零偏差:240.8
#>剩余偏差:240.3 AIC:248.3

由(v2.0.0)于2021年4月27日创建。

您可能正在寻找重新格式化(协变量,结果)
不要用公式代替调用。有些函数(如
update
)需要将其作为调用。我刚刚测试了这一点,使用第一个函数,它不会更改调用,结果是as中出现
错误。公式(form):找不到对象“form”
,因为
form
仅存在于函数中<另一方面,code>$formula显然是一个合适的调用,因为
update
可以用于使用第二个函数创建的对象。
getCall
也可以按照第二个函数的预期工作,所以我认为这应该可以。