如何在R中将plsr模型摘要导出为美观的HTML表格
提取PLSR模型摘要并生成美观HTML表格的方法
我之前也碰到过这个问题——pls包的plsr模型摘要确实不像lm那样能直接用现成工具导出美观表格,不过摸索出几个实用的办法,能快速提取信息并生成HTML表格,分享给你:
首先要明确:summary(my.plsr.model)返回的是一个summary.plsr类型的独立对象,不是模型本身的属性,所以直接用str(my.plsr.model)找不到这些内容。你需要先把摘要结果存为变量,再提取里面的信息:
sum_plsr <- summary(my.plsr.model) # 查看所有可提取的元素结构 str(sum_plsr)
接下来分两种常用的表格生成方案:
方案1:用knitr + kableExtra快速生成Bootstrap风格表格
这个方案适合快速生成简洁美观、支持网页自适应的HTML表格,自带hover和条纹效果:
步骤1:整理关键信息为数据框
先把模型基本信息和组件性能指标分别整理成结构化数据:
# 提取模型核心基本信息 basic_info <- data.frame( "项目" = c("X维度", "Y维度", "拟合方法", "组件数量"), "详情" = c( paste(sum_plsr$Xvar[1], sum_plsr$Xvar[2], sep = " × "), paste(sum_plsr$Yvar[1], sum_plsr$Yvar[2], sep = " × "), sum_plsr$method, sum_plsr$ncomp ) ) # 提取组件性能数据(兼容交叉验证场景) perf_data <- as.data.frame(cbind( "组件数" = 1:sum_plsr$ncomp, "训练集R²" = sum_plsr$R2$val[1,], "训练集RMSE" = sum_plsr$RMSE$val[1,], "验证集R²" = if(!is.null(sum_plsr$R2$adj)) sum_plsr$R2$adj[1,] else NA, "验证集RMSE" = if(!is.null(sum_plsr$RMSE$adj)) sum_plsr$RMSE$adj[1,] else NA ))
步骤2:生成并导出HTML表格
library(knitr) library(kableExtra) # 生成基本信息表格 kable(basic_info, format = "html", caption = "PLSR模型基本信息") %>% kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover")) # 生成组件性能表格 kable(perf_data, format = "html", caption = "PLSR模型组件性能指标") %>% kable_styling(bootstrap_options = c("striped", "condensed", "hover")) %>% column_spec(1, bold = TRUE) # 将组件数列设为粗体突出显示 # 若需保存为独立HTML文件 save_kable(your_table_object, "plsr_summary.html")
方案2:用gt包生成高度自定义的精致表格
如果你需要更个性化的样式(比如自定义配色、数字格式化、标题样式),gt包能实现更细腻的视觉效果:
library(gt) # 生成基本信息表格 basic_info %>% gt() %>% tab_header(title = "PLSR模型基本信息") %>% tab_style( style = cell_text(weight = "bold"), locations = cells_column_labels() ) %>% opt_table_lines() # 添加表格边框线提升可读性 # 生成组件性能表格 perf_data %>% gt() %>% tab_header(title = "PLSR模型组件性能") %>% fmt_number(columns = 2:5, decimals = 3) # 将指标列格式化为3位小数 tab_style( style = cell_fill(color = "#f0f8ff"), locations = cells_rows(odd) # 为奇数行添加浅蓝背景 ) %>% opt_table_theme(theme = gt_theme_538()) # 套用现成的美观主题 # 保存为独立HTML文件 gtsave(your_gt_table_object, "plsr_summary_gt.html")
小提示
- 如果你的PLSR模型启用了交叉验证(调用时加了
validation = "CV"),sum_plsr里会自动包含验证集的指标,上面的代码已经兼容这种场景; - 可以根据自己的需求调整表格的配色、字体、边框等样式,两个包都支持丰富的自定义参数。
内容的提问来源于stack exchange,提问作者andemexoax
相关产品推荐
相关产品推荐

