使用hdnom包smart数据集调用nomogram函数报错,请求排查
问题分析:hdnom包中nomogram函数调用错误
首先看你遇到的错误提示:
Error in nomogram(fit, model.type = "aenet", x, time, event, x.df, lambda = lambda, : factor name(s) not in the design: model.type x time event x.df lambda pred.at
这个错误的核心原因非常明确:你混淆了rms包和hdnom包的nomogram函数,并且传入了一堆当前调用函数不支持的参数。
具体问题拆解
- 你加载了
rms包后直接调用nomogram(),此时R会默认使用rms::nomogram。但rms::nomogram的参数列表里根本没有model.type、x、time、event这些选项——这些是hdnom::nomogram专属的参数,R会把这些不认识的参数当成要映射的变量,自然会报错说“因子名不在设计里”。 - 你传入的
x.df也是多余的,不管是哪个包的nomogram函数都不需要这个参数。
修正方案
根据你的场景(用hdnom::fit_aenet训练的模型),正确的做法是明确调用hdnom包的nomogram函数,参数按照它的要求传递:
# 确保加载hdnom包(如果没加载的话) library(hdnom) # 调用hdnom的nomogram,移除多余的x.df参数 nom = hdnom::nomogram( fit = fit, model.type = "aenet", x = x, time = time, event = event, lambda = lambda, pred.at = 365 * 2, funlabel = "2-Year Overall Survival Probability" ) # 绘制列线图 plot(nom)
额外提醒:你之前设置的datadist和options(datadist = "dd")是给rms包的模型用的,用hdnom的nomogram时完全不需要,建议把这两行代码删掉,避免不必要的干扰。
内容的提问来源于stack exchange,提问作者Arthi Rajendran
相关产品推荐
相关产品推荐

