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

使用rms包nomogram示例代码时出现'termlabels'错误,求解决方法

解决rms包6.8-1版本nomogram报错的方案

针对你遇到的Error in reformulate(attr(termobj, "term.labels")[-dropx], ... : 'termlabels' must be a character vector of length at least one错误,可尝试以下几种修复方法:

  • 升级rms包到最新版本
    该错误大概率是rms 6.8-1版本的已知bug,后续版本已修复。执行以下命令升级:

    install.packages("rms")
    

    升级后重新运行代码即可。

  • 明确指定nomogram的变量列表
    如果暂时无法升级包,可在调用nomogram时手动指定要包含的变量,避免函数内部误删所有项:

    nom <- nomogram(f, 
                    variables = c("age", "sex", "cholesterol", "blood.pressure"),
                    fun = plogis,
                    fun.at = c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999),
                    funlabel = "Risk of Death")
    
  • 重新生成并加载datadist
    有时datadist的缓存会导致变量识别异常,重新生成后再拟合模型:

    # 清除旧的datadist设置
    options(datadist = NULL)
    # 重新生成并加载
    ddist <- datadist(d)
    options(datadist = "ddist")
    # 重新拟合模型
    f <- lrm(y ~ lsp(age,50) + sex * rcs(cholesterol, 4) + blood.pressure, data=d)
    # 再创建nomogram
    nom <- nomogram(f, fun=plogis,
                    fun.at=c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999),
                    funlabel="Risk of Death")
    
  • 替换自定义fun为内置plogis
    你的代码中注释了可用plogis替代自定义函数,直接使用内置函数可避免潜在的参数处理问题:

    nom <- nomogram(f, fun=plogis,
                    fun.at=c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999),
                    funlabel="Risk of Death")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:49:53