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

R函数报object 'status' not found错误,求解决方法

R生存分析函数报错“object 'status' not found”解决方法

问题背景

习惯用SAS宏实现自动化分析,转用R编写生存分析函数survplot:初始版本可正常运行,但新增Log-rank P值计算代码后,调用时出现报错Error in FUN(X[[i]], ...) : object 'status' not found。

初始可运行代码:

survplot <- function(time, status){
  fit <- survfit(Surv(time, status)~GRP, data)
}
print(survplot(data$TIME_OS, data$STATUS_OS))

报错的函数版本:

survplot <- function(time, status){
  fit <- survfit(Surv(time, status)~GRP, data)
  surv_pvalue(fit=fit, data=data, method="survdiff")
  pvalue <- paste("Log-rank P-value:", format(pvalue$pval, digits=4))
}
print(survplot(data$TIME_OS, data$STATUS_OS))

参考SAS宏:

%macro survplot(time=,status=)
proc lifetest data=data;
time time*status(0);
run;
%mend;
%survplot(time=TIME_OS,status=STATUS_OS);

错误原因

  1. 变量传递方式错误:原函数直接传递data$TIME_OS这类向量,survfit和surv_pvalue无法关联到原数据集的GRP、status变量,导致后续查找变量失败。
  2. 结果未赋值:surv_pvalue的计算结果未赋值给变量,直接调用pvalue$pval会找不到对象。
  3. 函数无返回值:原函数未定义返回内容,print调用时无有效输出。

修正后的代码

调整函数参数逻辑,贴近SAS宏的使用习惯,直接接收数据集和变量名:

# 加载所需包
library(survival)
library(survminer)

survplot <- function(data, time_col, status_col) {
  # 动态构建生存分析公式
  surv_formula <- as.formula(paste0("Surv(", time_col, ", ", status_col, ") ~ GRP"))
  # 拟合生存模型
  fit <- survfit(surv_formula, data = data)
  # 计算Log-rank P值并保存结果
  pval_result <- surv_pvalue(fit = fit, data = data, method = "survdiff")
  pvalue_text <- paste("Log-rank P-value:", format(pval_result$pval, digits = 4))
  # 返回拟合模型和P值结果
  return(list(survival_fit = fit, log_rank_p = pvalue_text))
}

# 调用函数(用法接近SAS宏)
analysis_result <- survplot(data = data, time_col = "TIME_OS", status_col = "STATUS_OS")
# 查看P值
print(analysis_result$log_rank_p)
# 绘制生存曲线(可选)
ggsurvplot(analysis_result$survival_fit, data = data)

关键说明

  • 改用数据集+变量名的传递方式,与SAS宏的参数逻辑一致,避免向量传递导致的变量关联问题。
  • 显式保存surv_pvalue的计算结果,确保后续能正确提取P值。
  • 添加返回值,让函数能输出分析结果,便于后续使用或可视化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:02:57