This vignette introduces how to create multi level headers.

library(ftExtra)
#> Registered S3 method overwritten by 'ftExtra':
#>   method                  from     
#>   as_flextable.data.frame flextable

Prepare flextable

ft <- iris[1:2, ] %>% flextable()
ft

Sepal.Length

Sepal.Width

Petal.Length

Petal.Width

Species

5.1

3.5

1.4

0.2

setosa

4.9

3.0

1.4

0.2

setosa

Split headers

The split_header() function generates multi-level headers by separating original headers (row names) by delimiters.

Sepal

Sepal

Petal

Petal

Species

Length

Width

Length

Width

5.1

3.5

1.4

0.2

setosa

4.9

3.0

1.4

0.2

setosa

The sep argument defines delimiters by regular expression. The default delimiters are . and _. Let’s see what happens when seop = "e"

ft %>% split_header(sep = "e")

S

S

P

P

Sp

pal.L

pal.Width

tal.L

tal.Width

ci

ngth

ngth

s

5.1

3.5

1.4

0.2

setosa

4.9

3.0

1.4

0.2

setosa

Span headers

The span_header() function also generates multi-level headers. Unlike the split_header() function, the span_header() function merges adjacent headers if they have same values.

Sepal

Petal

Species

Length

Width

Length

Width

5.1

3.5

1.4

0.2

setosa

4.9

3.0

1.4

0.2

setosa