You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套函数场景下使用lapply/sapply对三个数据框执行Bootstrap及Kaplan-Meier计算的技术问询

解决嵌套函数场景下lapply/sapply处理Bootstrap与Kaplan-Meier计算的问题

先拆解你遇到的两个核心问题根源:

  1. Bootstrap维度错误:你用c(df, df1, df2)合并数据框,但c()处理数据框时会把它们拆成单个列的列表(最终x是包含6个列向量的集合,而非3个完整数据框的列表),所以x[, "Result"]这种数据框索引方式必然报错。
  2. Kaplan-Meier仅执行第一个数据框:同样因为x不是数据框列表,x$Result只会取到列表第一个元素(也就是df的Result列),后续数据框完全没被处理。

下面是完整的修正方案,包含代码和细节解释:

步骤1:正确创建数据框列表

把c(df, df1, df2)改成list(df, df1, df2),确保x是包含3个完整数据框的列表,还可以给元素命名方便后续识别:

x <- list(df, df1, df2)
names(x) <- c("df", "df1", "df2")

步骤2:调整Bootstrap自定义函数

你的原函数是针对数据框设计的,但如果我们直接传入数据框的Result列(向量),x[i, ]会报错(向量是一维结构,没有列索引)。调整函数适配向量输入,同时加上na.rm = TRUE避免异常值干扰:

# 分位数Bootstrap函数
quantfun <- function(x, i){
  d <- x[i]
  return(quantile(d, c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.95), na.rm = TRUE))
}

# 中位数Bootstrap函数
medianfun <- function(x, i){
  d <- x[i]
  return(median(d, na.rm = TRUE))
}

# 均值Bootstrap函数(可选保留)
meanfun <- function(x, i){
  d <- x[i]
  return(mean(d, na.rm = TRUE))
}

步骤3:用lapply批量执行Bootstrap计算

通过lapply遍历x中的每个数据框,对每个数据框的Result列执行Bootstrap:

set.seed(1234) # 保持随机性可复现

# 批量计算分位数Bootstrap
bo.quant_list <- lapply(x, function(data) {
  boot(data = data$Result, statistic = quantfun, R = 10000)
})

# 批量计算中位数Bootstrap
bo.median_list <- lapply(x, function(data) {
  boot(data = data$Result, statistic = medianfun, R = 10000)
})

# 批量计算中位数的95% BCA置信区间
bo.95ci_list <- lapply(bo.median_list, function(boot_obj) {
  boot.ci(boot_obj, conf = 0.95, type = "bca")
})

你可以通过bo.quant_list$df、bo.median_list$df1这样的方式查看单个数据框的计算结果。

步骤4:用lapply批量执行Kaplan-Meier计算

原代码里你写了x$Censored,但你的数据框列名是Cens,这里要修正列名,同时用lapply遍历每个数据框:

library(NADA2)

km_list <- lapply(x, function(data) {
  cfit(
    obs = data$Result, 
    cens = data$Cens, 
    qtls = c(.1,.2,.3,.4,.5,.8,.845,.85,.90,.95)
  )
})

现在km_list里会包含三个数据框的Kaplan-Meier结果,同样可以通过km_list$df查看单个结果。

验证结果

比如查看第一个数据框的中位数Bootstrap置信区间:

bo.95ci_list$df

查看第二个数据框的Kaplan-Meier结果:

km_list$df1

内容的提问来源于stack exchange,提问作者user11036517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:02:30