使用 survminer::ggsurvplot 在 r 中以编程方式绘制许多生存曲线的问题

Posted

技术标签:

【中文标题】使用 survminer::ggsurvplot 在 r 中以编程方式绘制许多生存曲线的问题【英文标题】:issues using survminer::ggsurvplot to plot many survival curves programmatically in r 【发布时间】:2019-06-08 23:57:23 【问题描述】:

我可以使用 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

我不知道为什么会这样。有谁知道如何解决这一问题?非常感谢。

【问题讨论】:

github.com/kassambara/survminer/issues/252 fit2 <- do.call(survfit, args = list(formula = fml, data = lung)) 【参考方案1】:

正如Aidan's comment 中的链接所建议的,您需要使用函数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 帮助页面中,它还显示了如何拟合公式列表。

【讨论】:

以上是关于使用 survminer::ggsurvplot 在 r 中以编程方式绘制许多生存曲线的问题的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份