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

编写Kaplan-Meier曲线函数报错:strata_x未找到的问题求助

问题分析与解决

你的代码有两个核心问题导致报错:

  1. 非标准求值{{}}误用:strata_x是字符串类型参数,{{strata_x}}会尝试在当前环境中查找名为strata_x的对象,而不是取参数传入的字符串值,这就是"object 'strata_x' not found"错误的原因。
  2. survFormula无法在公式中解析:你提前创建的survFormula是函数内部的局部对象,但survfit的公式是基于data_x中的列进行解析的,无法识别这个局部对象。

修正后的代码

library(survival)
library(survminer)

survival_function <- function(data_x, strata_x = "1"){
  # 直接在公式字符串中构造Surv表达式,基于data_x的列
  surv_formula_str <- paste("Surv(time, status) ~", strata_x)
  my_survfit <- survfit(as.formula(surv_formula_str), data = data_x)
  ggsurvplot(my_survfit, data = data_x, pval = TRUE)
}

# 测试示例(用survival包的lung数据集)
data(lung)
# 传入字符串分组变量
survival_function(lung, "sex")
# 默认单组情况
survival_function(lung)

关键修正点说明

  • 公式构造方式:直接将Surv(time, status)写入公式字符串,让survfit从data_x中读取对应列,避免局部对象无法解析的问题。
  • 字符串参数直接使用:不需要{{}},直接用strata_x的字符串值拼接公式,完美适配Shiny下拉菜单返回的字符串输入。
  • 默认值兼容:当strata_x = "1"时,公式变为Surv(time, status) ~ 1,对应单组生存曲线,符合你的初始设计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:54:35