«Без нумерации c аргумент бинарного оператора» при использовании ggsurvplot () + geom_dl () - PullRequest
0 голосов
/ 07 января 2020

Я хотел бы прикрепить метки с помощью geom_dl к графику Каплана – Мейера (КМ), полученному с помощью ggsurvplot. Работает нормально, если я использую сюжетную часть ggsurvplot.

library(survival)
library(survminer)
library(directlabels)

fit <- survfit(Surv(time, status) ~ disease, data = kidney)
surv_km <- ggsurvplot(fit, risk.table = TRUE)
surv_km$plot + geom_dl(aes(label = gsub('disease=','',strata)), 
                       method = list(dl.trans(x = x + .2), "last.points"))

Однако я получаю сообщение об ошибке, если я использую полный surv_km

surv_km + geom_dl(aes(label = gsub('disease=','',strata)), 
                  method = list(dl.trans(x = x + .2), "last.points"))
>Error in surv_km + geom_dl(aes(label = gsub("disease=", "", strata)),  : 
  non-numeric argument to binary operator
In addition: Warning message:
Incompatible methods ("+.ggsurv", "+.gg") for "+"

1 Ответ

0 голосов
/ 07 января 2020

Используйте %++% вместо +. Смотрите ?add_ggsurvplot для более подробной информации.

fit <- survfit(Surv(time, status) ~ disease, data = kidney)
surv_km <- ggsurvplot(fit, risk.table = TRUE, legend = "none")
surv_km %++% geom_dl(aes(label = gsub('disease=','',strata)), 
                     method = list(dl.trans(x = x + .2), "last.points"))

enter image description here

Чтобы удалить метки в конце таблицы, мы можем присвоить surv_km[["table"]][["layers"]][[2]] NULL, например

surv_km <- surv_km %++% 
               geom_dl(aes(label = gsub('disease=','',strata)), 
                       method = list(dl.trans(x = x + .2), "last.points"))
surv_km[["table"]][["layers"]][[2]]<-NULL

Наконец, чтобы удалить disease= в надписях к графам и / или таблицам, используйте gsub с names(fit$strata), как и

attr(fit$strata, "names") = gsub("disease=","",attr(fit$strata, "names"))
#then repeat above steps
...