2

我正在尝试使用survminer&survival包为相应的分析绘制生存曲线。risk.table = TRUE在命令中设置ggsurvplot会导致警告说'矢量化输入element_text()不受官方支持。结果可能出乎意料,或者在 ggplot2 的未来版本中可能会发生变化。

我还尝试了此问题是否与其他数据一起出现。这是我在 R 版本 4.0.3、Rstudio 版本 1.2.5033 上运行的简单表示:

library('survival')
library('survminer')
library('ggplot2')

lung <- survival::lung
fit<- survfit(Surv(time, status) ~ sex, data = lung)
ggsurvplot(fit, data = lung, risk.table = TRUE)

risk.table = FALSE如果这就是我假设 risktables 参数以某种方式干扰 ggplot2 x 轴格式的原因,则不会出现警告。在 github 上关于 ggplot2 的未来是否应支持 element_text() 的矢量化输入的讨论中,开发人员似乎宁愿选择弃用周期https://github.com/tidyverse/ggplot2/issues/3492

我想知道目前是否有某种方法可以克服这个问题,因为我想ggsurvplot在未来经常使用它的风险表功能。这个问题似乎也出现在使用创建的其他图上ggplot2(参见上面的 github 讨论)。然而,在 reprex 中,它似乎与一个内在论点有关ggsurvplot,在我看来,这个论点对于未来使用这个函数很重要。任何支持性意见将不胜感激。

4

1 回答 1

0

这是从特征中获取信息risk.table并将其(以及更多信息)呈现在生存图旁边的解决方法。我想在作者解决问题之前,这是我们目前能做的最好的事情。

library('survival')
library('survminer')
library('ggplot2')
library('kableExtra')


# Specify dataset
lung <- survival::lung
fit<- survfit(Surv(time, status) ~ sex, data = lung)


# -----------Scenario 1: KM-plot and risk.table without writing a function

kmplot <- ggsurvplot(fit, data = lung, risk.table = FALSE)
risktable <- kmplot$data.survtable


# Using R Markdown: Setting results='asis' in the corresponding chunk header - knit to html
## Output KM-plot
kmplot

## Output risktable
print (
  kable(risktable, caption = paste("Survival stratified by sex")) %>%
    column_spec(1, bold = T) %>%
    kable_styling(bootstrap_options = "hover", full_width = TRUE))



# -----------Scenario 2: Using a function
fun_surv <- function (x) {
kmplot <- ggsurvplot(x, data = lung, risk.table = FALSE)
risktable <- kmplot$data.survtable
list_surv <- list(kmplot, risktable)
list_surv
}

res_surv <- fun_surv(fit)


# Using R Markdown: Setting results='asis' in the corresponding chunk header - knit to html
## Output KM-plot
res_surv[[1]]

## Output risktable
print (
  kable(res_surv [[2]], caption = paste("Survival stratified by sex")) %>%
    column_spec(1, bold = T) %>%
    kable_styling(bootstrap_options = "hover", full_width = TRUE))
于 2021-03-19T10:34:13.880 回答