"Нечисловой аргумент бинарного оператора" при использовании ggsurvplot() + geom_dl()

Я хочу прикрепить ярлыки с помощью geom_dl к сюжету Каплана – Мейера (KM), созданного 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 ответ

Использовать %++% вместо того +. Увидеть?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"))

Чтобы убрать метки в конце таблицы, мы можем назначить 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
Другие вопросы по тегам