要为两条生存曲线之间的差异生成 p 值,我需要执行一系列繁琐的步骤,这些步骤需要使用起始数据框的一列中表示的三个值中的两个值的所有组合来重复,例如A、B 和 C 组:
# Load packages
library(survival)
library(survminer)
# Generate practice dataset
surv_time <- sample(100:200, size = 50, replace = TRUE)
surv_group <- sample(c("A", "B", "C"), size = 50, replace = TRUE)
surv_status <- rep(1, 50)
surv_data <- data.frame(Time = as.numeric(surv_time), Group = surv_group,
Status = surv_status)
# Manual for combination of groups A and B
s_data_AB <- surv_data[surv_data$Group %in% c("A", "B"), ]
s_obj_AB <- Surv(s_data_AB$Time, s_data_AB$Status)
s_curve_AB <- survfit(s_obj_AB ~ Group, data = s_data_AB)
s_pval_AB <- surv_pvalue(s_curve_AB)
s_pval_AB
这工作得很好,但是对于 (A+C) 和 (B+C) 单独执行此操作很不方便。所以我尝试使用以下自定义函数自动执行此操作:
# Custom function
s_curve_fun <- function(groups_of_interest) {
s_data <- surv_data[surv_data$Group %in% groups_of_interest, ]
s_obj <- Surv(s_data$Time, s_data$Status)
s_curve <- survfit(s_obj ~ Group, data = s_data)
print(s_curve)
s_pval <- surv_pvalue(s_curve)
return(s_pval)
}
# Execute function
s_curve_fun(c("A", "B"))
这在 print 调用起作用后会引发错误,因为surv_pvalue
在最后调用该函数会引发以下错误:
Error in eval(fit$call$data) : object 's_data' not found
有趣的是,事先调用函数 survfit 可以正常工作,即使survfit
也使用对象 s_data。当我survfit
从 s_curve_fun 导出输出并将其用作 的输入时surv_pvalue
,我得到了同样的错误。当我在 s_curve_fun 之外定义 s_data 时,一切正常(但显然不适用于所需的组组合)。
我很想知道为什么这不起作用以及如何解决它。我将不胜感激任何反馈!