You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R Markdown中生成美观的PDF格式汇总统计表格?

R Markdown生成PDF美观汇总统计表格解决方案

你尝试用as.data.frame(lapply(df, summary))生成汇总统计表格时出现Error in dimnames(x) <- dnx : 'dimnames' applied to non-array错误,原因是summary()对不同类型变量(数值型、因子型)返回的结果结构不一致,导致无法直接转成数据框。以下是几种可行的解决方法,能生成统计量为行名、变量为列名的转置表格,适配R Markdown的PDF输出:

基础R修正方案

先统一每个变量的summary结果格式,再合并转置:

# 示例数据
df <- data.frame(
  数值变量 = rnorm(100),
  分类变量 = factor(sample(c("A", "B", "C"), 100, replace = TRUE))
)

# 统一处理每个变量的summary结果
summary_list <- lapply(df, function(x) {
  s <- summary(x)
  names(s) <- gsub(":", "", names(s))  # 清理因子变量的统计量名称
  as.data.frame(t(s))
})

# 合并并转置得到目标格式
汇总表 <- t(do.call(rbind, summary_list))

更简便的第三方包方案

1. skimr包(推荐,美观适配PDF)

skimr专门用于生成标准化的汇总统计表格,直接在R Markdown中输出即可适配PDF格式:

library(skimr)
# 生成完整汇总表
skim(df)

# 自定义只保留均值、标准差
skim_with(numeric = list(均值 = mean, 标准差 = sd))
自定义汇总表 <- skim(df) %>% select(skim_variable, 均值, 标准差) %>% t()

2. psych包

用psych::describe生成常用统计量,转置后符合需求:

library(psych)
统计结果 <- describe(df)
# 提取均值、标准差并转置
目标表格 <- t(统计结果[, c("mean", "sd")])
colnames(目标表格) <- colnames(df)  # 重命名列名为变量名
rownames(目标表格) <- c("均值", "标准差")

R Markdown中输出美观PDF表格

得到统计表格后,用knitr和kableExtra生成适配PDF的美观表格:

library(knitr)
library(kableExtra)

kable(目标表格, caption = "变量汇总统计", align = "c") %>%
  kable_styling(latex_options = c("striped", "hold_position"))

内容的提问来源于stack exchange,提问作者Gaspar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:07:18