r-markdown - 动态 mutli-line header 与第二行相同

r-markdown - dynamic mutli-line header with second line the same

我正在尝试在 r-markdown 中创建一个 multi-line header 但我遇到了麻烦 1.) 使其动态化 2.) 允许 [=] 的第二行29=]一样。

例如,在下面的数据集中,您可以看到有两组,Petal 和 Septal。每个都有长度和宽度。

library(tidyverse)

data <- iris[c(1, 51, 101), ] %>% 
  gather(key = key, value = value, -Species) %>% 
  separate(col = key, into = c("Group", "key"), sep = "\.") %>% 
  spread(key = key, value = value, )

data

#       Species      Group   Length Width
# 1     setosa       Petal   1.4    0.2
# 2     setosa       Sepal   5.1    3.5
# 3 versicolor       Petal   4.7    1.4
# 4 versicolor       Sepal   7.0    3.2
# 5  virginica       Petal   6.0    2.5
# 6  virginica       Sepal   6.3    3.3

我希望结果是 multi-line header,其中按花部分分组(按唯一值分组,无论它们是什么)以及长度和宽度作为第二行。像下面这样:

# --------------------------------------------
#            Petal            Sepal
# --------------------------------------------
# Species    Length  Width    Length    Width
# --------------------------------------------
# setosa     1.4     0.2      5.1       3.5
# versicolor 4.7     1.4      7         3.2
# virginica  6       2.5      6.3       3.3
# --------------------------------------------

我一直在试验 kableflextable 包,但示例似乎 hard-code 我试图避免的 headers。

有了flextable,应该是这样的:

library(tidyverse)
library(flextable)

data <- iris[c(1, 51, 101), ]

header_df <- tibble( key = colnames(data) ) %>% 
  separate(col = key, into = c("Group1", "Group2"), sep = "\.", remove = FALSE, fill = "left")

data %>% 
  select(Species, everything()) %>% 
  flextable() %>% 
  set_header_df(mapping = header_df, key = "key") %>% 
  merge_h(part = "header") %>% 
  theme_booktabs()