代码之家  ›  专栏  ›  技术社区  ›  camnesia

ggsurvplot:从函数调用时无法使用survfit

  •  3
  • camnesia  · 技术社区  · 8 年前

    我试着绘制一个生存图,当试图把我的SurvFoad函数移到一个main函数中时,我遇到了一个问题,在那里我可以把它称为不同的数据集。当我运行代码时

    fit<- survfit(Surv(time, status) ~ sex, data = lung)
    
    allsurv <- function(fit){
    ggsurvplot(
    fit,
    pval = TRUE,
    pval.coord = c(200, 0.10), 
    conf.int = TRUE,
    xlab = "Days",
    ggtheme = theme_light(), 
    surv.median.line = "hv", 
    legend.labs = c("Female","Male"),
    legend.title = "",
    palette = c("#8C3F4D","#3E606F")) + 
    scale_y_continuous(expand = c(0.02, 0.02),breaks = seq(from = 0, to = 1, by = 0.1),labels=percent) + 
    scale_x_continuous(expand = c(0.006, 0.006),
                       limits = c(0,366*12), breaks = seq(0, 4392, 100))
    }
    
    allsurv(fit)
    

    函数正常绘制 enter image description here

    但是,当我从函数调用survfit时:

    fit_all <- function(x){
     survfit(Surv(time, status) ~ sex, data = x)
    }
    
    allsurv(fit_all(lung))
    

    我收到一个错误:“eval中的错误(fit$call$data):未找到对象'x'”

    你知道我做错了什么吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   camnesia    8 年前

    我设法使它运转起来。其他有同样问题的人。这个问题似乎是由单独调用函数或从另一个函数返回的结果引起的。

     fit_all(lung) 
    

    它返回调用:survfit(formula=surv(time,status)~sex,data=x)

    fit 
    

    它返回调用:survfit(formula=surv(time,status)~ sex,data=lung)

    似乎ggsurvplot将调用中的数据视为绘图的数据,并且当从另一个函数“data=x”调用时。过去的方法似乎是在ggsurvplot中的survfit函数之前定义数据。

    allsurv <- function(fit, x){
    ggsurvplot(
    data = x,
    fit,
    pval = TRUE,
    pval.coord = c(200, 0.10), 
    conf.int = TRUE,
    xlab = "Days",
    ggtheme = theme_light(), 
    surv.median.line = "hv", 
    legend.labs = c("Female","Male"),
    legend.title = "",
    palette = c("#8C3F4D","#3E606F")) + 
    scale_y_continuous(expand = c(0.02, 0.02),breaks = seq(from = 0, to = 1, by = 0.1),labels=percent) + 
    scale_x_continuous(expand = c(0.006, 0.006),
                       limits = c(0,366*12), breaks = seq(0, 4392, 100))
    }
    
    allsurv(fit_all(lung), lung)
    
    推荐文章