创建KM曲线函数

问题描述 投票:0回答:1

我正在尝试制作一个KM曲线函数,但是,我不确定我哪里出错了。

library(tidyverse)
library(ggplot)
library(survival)
library(survminer)


km_curve <- function(df, tm, ev, predictor) {
            surv_object <- Surv(time = df$tm, event = df$ev)
            fit1 <- survfit(surv_object ~ predictor, data = df)
            ggsurvplot(fit1, data = df, pval = TRUE, xlab = "Months")
            }

如果我将所有 df、tm、ev 和 Predictor 替换为实际名称,上面的代码就可以很好地工作。

我也试过这个

km_curve <- function(df, tm, ev, predictor) {
            surv_object <- Surv(time = df[,tm], event = df[,ev])
            fit1 <- survfit(surv_object ~ predictor, data = df)
            ggsurvplot(fit1, data = df, pval = TRUE, xlab = "Months")
            }

             km_curve(df = first_primaries, 
                      tm = pfs_time_months, 
                      ev = pfs_fail.x, 
                      predictor = risk)

我也尝试过

   km_curve <- function(df, tm, ev, predictor) {
               tim <- df %>% 
                      select(tm)
               even <- df %>% 
                      select(ev)
               surv_object <- Surv(time = tim, event = even)
               fit1 <- survfit(surv_object ~ predictor, data = df)
               ggsurvplot(fit1, data = df, pval = TRUE, xlab = "Months")
             }

         km_curve(df = first_primaries, 
                  tm = pfs_time_months, 
                  ev = pfs_fail.x, 
                  predictor = risk)

它一直给我错误消息,指出 pf_time_months 未找到。即使它是我指定的数据框中的一列。

r survival-analysis
1个回答
0
投票

我的猜测(我必须猜测,因为你没有提供可重现的代码)是

pfs_time_months
和其他是
df
的某些列的名称。这就是为什么那不起作用。如果使用此函数,您可以将它们作为字符串传递:

km_curve <- function(df, tm, ev, predictor) {
  surv_object <- Surv(time = df[, tm], event = df[, ev])
  f <- as.formula(sprintf("surv_object ~ %s", predictor))
  fit1 <- survfit(f, data = df)
  ggsurvplot(fit1, data = df, pval = TRUE, xlab = "Months")
}

km_curve(df = first_primaries, 
         tm = "pfs_time_months", 
         ev = "pfs_fail.x", 
         predictor = "risk"
)
© www.soinside.com 2019 - 2024. All rights reserved.