有没有一种方法可以捕获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
也可以按照第二个函数的预期工作,所以我认为这应该可以。