R语言rms包nomogram函数报错duplicated variable labels解决求助
报错原因
你从SPSS导入的age50、BMI23、genderRE三个自变量均为带值标签的labelled类型(数据集结构里的<dbl+lbl>即为该类型标识),三个变量的原始编码都是0和1,rms包的nomogram()函数读取变量值标签时出现重复冲突,触发报错。
解决方案
你可以选择以下任意一种方法处理后重新运行代码即可:
方法1:转成带自定义标签的因子(更推荐,列线图显示更直观)
将三个二分类变量转成因子,分别设置独立的水平标签,避免重复冲突:
library(dplyr) thickness_forR_1 <- thickness_forR_1 %>% mutate( age50 = factor(age50, levels = c(0,1), labels = c("<50岁", "≥50岁")), BMI23 = factor(BMI23, levels = c(0,1), labels = c("<23", "≥23")), genderRE = factor(genderRE, levels = c(0,1), labels = c("男", "女")) )
处理完成后重新拟合模型、绘制列线图即可:
# 重置datadist dd <- datadist(thickness_forR_1) options(datadist = "dd") # 重新拟合ols模型 fit.reg22 <- ols(ALT2 ~ age50 + BMI23 + genderRE, data = thickness_forR_1, x = TRUE, y = TRUE) # 绘制列线图 plot(nomogram(fit.reg22))
方法2:清除变量值标签,转成普通数值型
如果不需要在列线图上显示文字标签,可以直接清除三个变量的标签属性:
library(dplyr) library(haven) thickness_forR_1 <- thickness_forR_1 %>% mutate(across(c(age50, BMI23, genderRE), zap_labels))
后续步骤和方法1一致,重置datadist、重新拟合模型即可正常绘图。
内容的提问来源于stack exchange,提问作者Ramla Juma'a
相关产品推荐
相关产品推荐

