我可以用ggsurvplot绘制一个像下面这样的Kaplan-Meier图:
library(survminer)
library(survival)
fit1 = survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit1, data = lung)
但是,我需要以编程方式绘制许多 KM 图。我需要将不同的变量作为字符串传递。我在下面试过。
fml = as.formula(paste('Surv(time, status)~', 'sex'))
fit2 = survfit(fml, data = lung)
ggsurvplot(fit2, data = lung)
令人惊讶的是,这不起作用。我收到以下错误消息:
Error: object of type 'symbol' is not subsettable
我不知道为什么会这样。有谁知道如何解决这个问题? 多谢。
正如 Aidan 评论中的链接所建议的那样,您需要使用函数 survminer::surv_fit()
,它是survival::survfit()
的包装器。所以,在你的例子中,
library(survminer)
library(survival)
# lung is distributed as an object, survival::lung
fit1 = surv_fit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit1, data = lung)
然后可以绘制surv_fit(object.formula)
的输出
fml = as.formula(paste('Surv(time, status)~', 'sex'))
fit2 = surv_fit(fml, data = lung)
ggsurvplot(fit2, data = lung)
在surv_fit
帮助页面中,它还显示了如何适应公式列表。