如何从2×8的DataFrame生成可存为PDF的简单表格并调整列顺序
最简实现方案(R语言)
步骤1:准备环境与数据
首先加载必要的包,同时处理原始DataFrame中的list类型列(转换为数值型):
# 首次运行需安装包 install.packages(c("knitr", "kableExtra")) # 加载依赖包 library(knitr) library(kableExtra) # 导入原始数据 df <- structure(list(A = list(0.934842767295597, 0.92922841571852), B = list(0.516589250165893, 0.525067529460655), C = list(0.867615330138182, 0.866211826128489), D = list(0.0881670095698295, 0.0834131044726853), E = list(0.85734568558549, 0.856776377557092), F = list(1.02523463957426, 1.01379194951716), G = list(0.444709565304963, 0.419220178831526), H = c(0.22, 0.25)), row.names = c(18L,21L), class = "data.frame") # 将list类型列转换为数值型 df[] <- lapply(df, function(x) if(is.list(x)) unlist(x) else x)
步骤2:调整列顺序(将H移至最左侧)
两种调整方式可选:
- 通用灵活版(无需硬编码所有列名):
new_col_order <- c("H", setdiff(names(df), "H")) df <- df[, new_col_order]
- 固定顺序版(手动指定所有列):
df <- df[, c("H", "A", "B", "C", "D", "E", "F", "G")]
步骤3:设置行名与生成格式化表格
修改行名并生成符合要求的白色简洁表格:
# 设置自定义行名 rownames(df) <- c("scenario 1", "scenario 2") # 生成表格并格式化:保留两位小数,白色主题 table <- kable(df, digits = 2, caption = "Scenario Comparison") %>% kable_styling(theme = "white", full_width = FALSE)
步骤4:保存为PDF文件
直接导出为PDF:
save_kable(table, file = "scenario_table.pdf")
关键说明
digits = 2参数统一设置所有数值保留两位小数,无需单独处理每一列kable_styling(theme = "white")生成无多余背景色的简洁白色表格- 通用列顺序调整方法适合列数较多的场景,避免手动维护列名列表
内容的提问来源于stack exchange,提问作者user21573410
相关产品推荐
相关产品推荐

