且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从字符串创建公式调用

更新时间:2022-06-23 05:29:37

找不到好的重复对象,因此请发表评论作为答案.

Couldn't find a good dupe, so posting comment as an answer.

如果将完整的公式构建为字符串,包括,则可以在其上使用 as.formula ,例如

If you build the full formula as a string, including the ~, you can use as.formula on it, e.g.,

x = "x1 + x2 + x3"
y = "Surv(time, event)"
form = as.formula(paste(y, "~", x))
coxph(form, data = your_data)


有关可重现的示例,请考虑?coxph 帮助页面底部的第一个示例:


For a reproducible example, consider the first example at the bottom of the ?coxph help page:

library(survival)
test1 <- list(time=c(4,3,1,1,2,2,3), 
              status=c(1,1,1,0,1,1,0), 
              x=c(0,2,1,1,1,0,0), 
              sex=c(0,0,0,0,1,1,1)) 
# Fit a stratified model 
coxph(Surv(time, status) ~ x + strata(sex), test1)
# Call:
# coxph(formula = Surv(time, status) ~ x + strata(sex), data = test1)
# 
#    coef exp(coef) se(coef)    z    p
# x 0.802     2.231    0.822 0.98 0.33
# 
# Likelihood ratio test=1.09  on 1 df, p=0.3
# n= 7, number of events= 5 

lhs = "Surv(time, status)"
rhs = "x + strata(sex)"
form = as.formula(paste(lhs, "~", rhs))
form
# Surv(time, status) ~ x + strata(sex)
## formula looks good

coxph(form, test1)
# Call:
# coxph(formula = form, data = test1)
# 
#    coef exp(coef) se(coef)    z    p
# x 0.802     2.231    0.822 0.98 0.33

两种方法的结果相同.