英文:
R survminer::ggsurvplot can't combine due to "atomic vector"?
问题
可复现的示例:
require(Survival)
require(survminer)
require(ggplot2)
set.seed(42)
a <- c(32,291,545, 44,3,792,352, 20,615,169, 61,156, 88,863,255, 33,132,5,
63,8,964,831, 55,133, 12, 54,261,867, 17, 12,699,233,251,446, 43,223,
374, 75, 34, 69,120, 84,134,8,806,8, 48, 86,211, 2436, 61, 81, 87, 12,
838, 34, 17,141, 44,155,128,6, 29, 16, 16, 34,130,430,325, 41, 28, 53,
32,291,545, 44,3,792,352, 20,615,169, 61,156, 88,863,255, 33,132,5,
63,8,964,831, 55,133, 12, 54,261,867, 17, 12,699,233,251,446, 43,223,
86, 54,3,630, 93,699, 25,746,6, 46, 22, 60,395,402,151, 26, 38,125,
75, 34, 69,120, 84,134,8,806,8, 48, 86,211, 2436, 61,
191, 49, 59,6, 34, 56,2, 96, 422, 45, 70)
b <- sample(c("Alpha", "Beta", "Gamma"), length(a), replace = TRUE)
c <- sample(0:1, length(a), replace = TRUE)
df <- data.frame(a, b, c)
avg <- survfit(Surv(time = a, event = c) ~ 1, data = df)
survminer::ggsurvplot(
avg,
conf.int = FALSE,
censor = FALSE,
palette = "black",
linetype = "dashed"
)
surv_b <- survfit(Surv(time = a, event = c) ~ b, data = df)
survminer::ggsurvplot(
surv_b,
conf.int = FALSE,
censor = FALSE,
)
surv_comb <- c(avg, surv_b)
survminer::ggsurvplot_combine(
surv_comb,
data = df,
combine = TRUE,
censor = FALSE,
legend = "right"
)
两条生存曲线分别绘制时没有错误,但当我尝试将它们组合时,出现了一个错误,指出“$”运算符对原子向量无效。我已经检查了几乎所有的东西,包括is.atomic(),但我找不到问题的原因。能否有人帮助我解决这个问题?
英文:
Reproducible example:
require(Survival)
require(survminer)
require(ggplot2)
set.seed(42)
a <- c(32,291,545, 44,3,792,352, 20,615,169, 61,156, 88,863,255, 33,132,5,
63,8,964,831, 55,133, 12, 54,261,867, 17, 12,699,233,251,446, 43,223,
374, 75, 34, 69,120, 84,134,8,806,8, 48, 86,211, 2436, 61, 81, 87, 12,
838, 34, 17,141, 44,155,128,6, 29, 16, 16, 34,130,430,325, 41, 28, 53,
32,291,545, 44,3,792,352, 20,615,169, 61,156, 88,863,255, 33,132,5,
63,8,964,831, 55,133, 12, 54,261,867, 17, 12,699,233,251,446, 43,223,
86, 54,3,630, 93,699, 25,746,6, 46, 22, 60,395,402,151, 26, 38,125,
75, 34, 69,120, 84,134,8,806,8, 48, 86,211, 2436, 61,
191, 49, 59,6, 34, 56,2, 96, 422, 45, 70)
b <- sample(c("Alpha", "Beta", "Gamma"), length(a), replace = T)
c <- sample(0:1, length(a), replace = T)
df <- data.frame(a, b, c)
avg <- survfit(Surv(time = a, event = c) ~ 1, data = df)
survminer::ggsurvplot(
avg,
conf.int = FALSE,
censor = FALSE,
palette = "black",
linetype = "dashed"
)
surv_b <- survfit(Surv(time = a, event = c) ~ b, data = df)
survminer::ggsurvplot(
surv_b,
conf.int = FALSE,
censor = FALSE,
)
surv_comb <- c(avg, surv_b)
survminer::ggsurvplot_combine(
surv_comb,
data = df,
combine = TRUE,
censor = FALSE,
legend = "right"
)
The two survival curves separately plot without error, but when I try to combine them, I get an error that ! $ operator is invalid for atomic vectors. I have checked just about everything with is.atomic() and I can't find what causes the issue. Could someone help me figure this out, please?
答案1
得分: 1
fits <- list(avg= avg, surv_b = surv_b)
survminer::ggsurvplot_combine(
fits,
data = df,
combine = TRUE,
censor = FALSE,
legend = "right"
)
英文:
You need to make a list, with your two fits in it, not concatenate the fits.
fits <- list(avg= avg, surv_b = surv_b)
survminer::ggsurvplot_combine(
fits,
data = df,
combine = TRUE,
censor = FALSE,
legend = "right"
)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论