如何在survfit函数中使用带反引号的变量名?
解决survfit无法识别带空格变量名的问题
问题背景
为了让生存分析图表显示更友好的变量名,将数据框中的baria_t重命名为带空格的Surgery type,但运行survfit时出现错误:
Error in `[.data.frame`(mf, ll) : colonnes non définies sélectionnées
(法语错误,意为“选择了未定义的列”),后续ggsurvplot也无法正常执行。
解决方案
不要直接修改数据框中的变量名为带空格格式——带空格的变量名在R的统计函数中容易引发识别问题。推荐保留原始变量名,在可视化阶段替换显示标签,既保证统计逻辑正常运行,又能得到友好的图表展示。
具体实现步骤
保留原始变量名运行survfit
直接使用原始变量名baria_t构建生存分析模型,避免带空格变量名的干扰:fit <- survfit(Surv(duree_suivi, Cancer) ~ baria_t, data = pts_raw_reg)在ggsurvplot中自定义显示标签
通过ggsurvplot的参数或后续修改ggplot对象,替换图表中的变量名和标签:ggsurv <- ggsurvplot(fit, conf.int = TRUE, palette = c("#FF9E29", "#86AA00"), risk.table = TRUE, risk.table.col = "strata", fun = "cumhaz", yli = c(0, 0.05), # 替换生存曲线的图例标签(按 strata 顺序填写) legend.labs = c("腹腔镜手术", "开腹手术"), # 替换为实际手术类型名称 # 自定义风险表标题 risk.table.title = "患者风险表" ) # 进一步修改坐标轴和图例的标题 ggsurv$plot <- ggsurv$plot + labs( x = "随访时间(月)", y = "累积风险", color = "手术类型", fill = "手术类型" )
错误原因说明
survfit对带空格的变量名支持有限,尤其是在公式解析和数据框列匹配时,容易出现列识别失败的问题。即使使用反引号包裹,部分版本的survival包仍可能存在兼容性问题,因此保留原始变量名是最稳妥的方案。
内容的提问来源于stack exchange,提问作者Seydou GORO
相关产品推荐
相关产品推荐

