grid.arrange (Gridextra) 组合存储在列表中的生存曲线时出错
grid.arrange (Gridextra) Error when combining survival curves stored in a list
这个问题的细微变化已经出现了很多,但 none 似乎对我的情节有所帮助。
我正在以进入给定计划的那一刻为条件进行生存分析(更准确地说,是进入培训后在失业中的生存)。
我有一个包含 12 个数据库的列表(供在第 1 个月到第 12 个月进入该计划的人使用),我正在做 12 个 Kaplan Meier 生存曲线(基于这 12 个数据库)也存储在一个列表中。
当我尝试使用 grid.arrange 将 12 条 Kaplan Meier 曲线放在一个网格中时,出现以下错误“gList(list(x = c(47.0657534246575, 47.0657534246575), y = c (0.262116178126773,:“gList”中只允许 'grobs'。
问题出在哪里?有其他选择吗?
library(survival)
library(survminer)
library(gridExtra)
#list containing the 12 databases
list_data_month
#Kaplan Meier estimates + curves for the 12 months
month <- c(1:12)
list_kp_month <- list() #list for Kaplan Meier estimates
list_kp_plot_month <- list() #list for Kaplan Meier curves
for(i in month){
#Kaplan Meier estimates
list_kp_month[[i]] <- survfit(Surv(time=time_t,event=status)~treatment, data=list_data_month[[i]],robust =TRUE,weights =weights)
#Kaplan Meier curves
list_kp_plot_month[[i]] <- ggsurvplot(fit = list_kp_month[[i]],
palette = NULL, # Couleur, e.g. "blue"
linetype = 1, # Ligne "solide"
surv.median.line = "none", # Essayer "hv"
conf.int = TRUE,
risk.table = FALSE, # Peut être "TRUE"
cumevents = FALSE,
cumcensor = FALSE,
tables.height = 0.25,
xlab = "Months",
legend = "bottom",
legend.title = "",
legend.labs = c("Control", "Treatment")
)
}
#Gridextra - Combining the 12 Kaplan Meier curves together
n <- length(list_kp_plot_month)
nCol <- floor(sqrt(n))
do.call("grid.arrange", c(list_kp_plot_month, ncol=nCol))
问题是 ggsurvplot
返回的对象不是 ggplot 对象。它是 class ggsurvplot
的对象,它只是一个列表。该图本身只是此列表的一个元素,名称为 plot
.
因此,要解决您的问题,您必须首先使用例如从 list_kp_plot_month
列表中提取图表lapply(list_kp_plot_month,
[[, "plot")
使用 lung
数据集的简化示例:
library(survival)
library(survminer)
library(gridExtra)
# Create example data. Just 2 months
list_data_month <- list(month1 = lung, month2 = lung)
list_kp_month <- list()
list_kp_plot_month <- list()
for (i in seq_along(list_data_month)) {
# Kaplan Meier estimates
list_kp_month[[i]] <- survfit(Surv(time = time, event = status) ~ sex, data = list_data_month[[i]], robust = TRUE)
# Kaplan Meier curves
list_kp_plot_month[[i]] <- ggsurvplot(
fit = list_kp_month[[i]],
palette = NULL, # Couleur, e.g. "blue"
linetype = 1, # Ligne "solide"
surv.median.line = "none", # Essayer "hv"
conf.int = TRUE,
risk.table = FALSE, # Peut être "TRUE"
cumevents = FALSE,
cumcensor = FALSE,
tables.height = 0.25,
xlab = "Months",
legend = "bottom",
legend.title = "",
legend.labs = c("Control", "Treatment")
)
}
# Gridextra - Combining the 12 Kaplan Meier curves together
n <- length(list_kp_plot_month)
nCol <- floor(sqrt(n))
# Get plots from ggsurvplot objects
plots <- lapply(list_kp_plot_month, `[[`, "plot")
do.call("grid.arrange", c(plots, ncol = nCol))
这个问题的细微变化已经出现了很多,但 none 似乎对我的情节有所帮助。
我正在以进入给定计划的那一刻为条件进行生存分析(更准确地说,是进入培训后在失业中的生存)。
我有一个包含 12 个数据库的列表(供在第 1 个月到第 12 个月进入该计划的人使用),我正在做 12 个 Kaplan Meier 生存曲线(基于这 12 个数据库)也存储在一个列表中。
当我尝试使用 grid.arrange 将 12 条 Kaplan Meier 曲线放在一个网格中时,出现以下错误“gList(list(x = c(47.0657534246575, 47.0657534246575), y = c (0.262116178126773,:“gList”中只允许 'grobs'。
问题出在哪里?有其他选择吗?
library(survival)
library(survminer)
library(gridExtra)
#list containing the 12 databases
list_data_month
#Kaplan Meier estimates + curves for the 12 months
month <- c(1:12)
list_kp_month <- list() #list for Kaplan Meier estimates
list_kp_plot_month <- list() #list for Kaplan Meier curves
for(i in month){
#Kaplan Meier estimates
list_kp_month[[i]] <- survfit(Surv(time=time_t,event=status)~treatment, data=list_data_month[[i]],robust =TRUE,weights =weights)
#Kaplan Meier curves
list_kp_plot_month[[i]] <- ggsurvplot(fit = list_kp_month[[i]],
palette = NULL, # Couleur, e.g. "blue"
linetype = 1, # Ligne "solide"
surv.median.line = "none", # Essayer "hv"
conf.int = TRUE,
risk.table = FALSE, # Peut être "TRUE"
cumevents = FALSE,
cumcensor = FALSE,
tables.height = 0.25,
xlab = "Months",
legend = "bottom",
legend.title = "",
legend.labs = c("Control", "Treatment")
)
}
#Gridextra - Combining the 12 Kaplan Meier curves together
n <- length(list_kp_plot_month)
nCol <- floor(sqrt(n))
do.call("grid.arrange", c(list_kp_plot_month, ncol=nCol))
问题是 ggsurvplot
返回的对象不是 ggplot 对象。它是 class ggsurvplot
的对象,它只是一个列表。该图本身只是此列表的一个元素,名称为 plot
.
因此,要解决您的问题,您必须首先使用例如从 list_kp_plot_month
列表中提取图表lapply(list_kp_plot_month,
[[, "plot")
使用 lung
数据集的简化示例:
library(survival)
library(survminer)
library(gridExtra)
# Create example data. Just 2 months
list_data_month <- list(month1 = lung, month2 = lung)
list_kp_month <- list()
list_kp_plot_month <- list()
for (i in seq_along(list_data_month)) {
# Kaplan Meier estimates
list_kp_month[[i]] <- survfit(Surv(time = time, event = status) ~ sex, data = list_data_month[[i]], robust = TRUE)
# Kaplan Meier curves
list_kp_plot_month[[i]] <- ggsurvplot(
fit = list_kp_month[[i]],
palette = NULL, # Couleur, e.g. "blue"
linetype = 1, # Ligne "solide"
surv.median.line = "none", # Essayer "hv"
conf.int = TRUE,
risk.table = FALSE, # Peut être "TRUE"
cumevents = FALSE,
cumcensor = FALSE,
tables.height = 0.25,
xlab = "Months",
legend = "bottom",
legend.title = "",
legend.labs = c("Control", "Treatment")
)
}
# Gridextra - Combining the 12 Kaplan Meier curves together
n <- length(list_kp_plot_month)
nCol <- floor(sqrt(n))
# Get plots from ggsurvplot objects
plots <- lapply(list_kp_plot_month, `[[`, "plot")
do.call("grid.arrange", c(plots, ncol = nCol))