如何将R语言rms包lrm()函数的返回结果分别提取为data.frame格式
lrm输出结果拆分提取方案
操作前确保已加载rms包:
library(rms)
你可以直接通过lrm返回的模型对象自带的属性提取对应内容,不需要额外解析打印的文本结果:
1 提取模型统计量表(对应需求中的df1)
lrm模型对象的stats属性已经存储了所有打印输出的模型拟合、判别指数相关的统计量,为命名向量格式,直接转成data.frame即可:
# 提取所有模型统计量 stats_vec <- f$stats # 转成两列格式的data.frame,可按需调整列名 df1 <- data.frame( 指标名称 = names(stats_vec), 指标值 = as.numeric(stats_vec) )
打印f时展示的样本量、LR卡方、自由度、P值、R²、C指数、Dxy等所有指标都在stats_vec中,如果你需要完全还原打印输出的三列排版(模型似然比检验、判别指数、秩判别指数),按名称从stats_vec里提取对应指标组合成多列的data.frame即可。
2 提取系数表(对应需求中的df2)
系数及显著性检验结果可以直接通过模型摘要的系数矩阵提取,转成data.frame即可:
# 提取系数矩阵 coef_mat <- coef(summary(f)) # 转成data.frame并重命名列,和打印输出的列名一致 df2 <- as.data.frame(coef_mat) colnames(df2) <- c("Coef", "S.E.", "Wald Z", "Pr(>|Z|)")
3 整合为目标结构
mydf <- list(df1 = df1, df2 = df2) # 调用方式和需求完全匹配 mydf$df1 mydf$df2
内容的提问来源于stack exchange,提问作者dbcoffee
相关产品推荐
相关产品推荐

