使用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
相关产品推荐
相关产品推荐

