kableExtra:为动态列长度调整列标签的长度
kableExtra: Adjust length of column label for dynamic column lengths
我正在使用 R Markdown 创建 PDF 文件,其中包含摘要 table 以及动态 changing/unknown 数量的每月列。我希望“Month Actuals”标签动态调整以显示在报告 运行.
时出现的所有月份列上方
我创建了一个 month_count object:
library(tidyverse)
month_count <-
data %>%
summarize(month_count = n_distinct(year_month)) %>%
as_vector()
并在add_header_above函数中使用:
summary %>%
kbl("latex",
booktabs = TRUE) %>%
kable_styling(position = "left",
latex_options = c("HOLD_position",
"scale_down",
"striped")) %>%
column_spec(column = 1, width = "2in") %>%
column_spec(column = 2:99, width = ".75in") %>%
add_header_above(c(" ", "Year-to-Date" = 4, "Month-to-Date" = 3, "Monthly Actuals" = month_code))
这有效,但是,输出上的标签显示为“每月 Actuals.month_count”。关于如何 1) 改进此标签或 2) 设置动态调整 header 标签有什么想法吗?
下面是正在播放的数据,如果这对解决标签问题有用的话:
data
year_month
<chr>
2021_07
2021_08
2021_09
2021_10
2021_11
2021_12
2022_01
2022_02
summary
` Area `Yearly Target` `YTD Total` `Percent of Yearly T~` Balance `Monthly Target` `Current Month~` `Percent of Mo~` `2021 07` `2021 08`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
Area 1 416 0 0 -416 35 0 0 0 0
Area 2 520 69 13.3 -451 44 9 20.4 12 11
Area 3 624 0 0 -624 52 0 0 0 0
Area 4 50 45 90 -5 5 7 140 5 3
Area 5 0 6713 0 0 0 959 0 0 1097
Area 6 0 240 0 0 0 30 0 21 42
Area 7 125 6 4.8 -119 11 2 18.2 1 2
Area 8 120 18 15 -102 10 5 50 0 0
Area 9 3900 1127 28.9 -2773 325 141 43.4 71 96
Area 10 54 0 0 -54 5 0 0 0 0
Area 11 0 118 0 0 0 15 0 50 35
您的 month_count
是一个已命名的整数,该名称以 header 结尾。
> str(month_count)
Named int 8
- attr(*, "names")= chr "month_count"
关于如何解决这个问题的两个例子
- 删除名称属性,
names(month_count) <- NULL
并保持其他一切不变
- 根本不要使用
month_count
而是依赖 ncol(summary)
:add_header_above(c(" ", "Year-to-Date" = 4, "Month-to-Date" = 3, "Monthly Actuals" = ncol(summary)-8))
使用其中任何一个,header 中的附加文本将被删除:
我正在使用 R Markdown 创建 PDF 文件,其中包含摘要 table 以及动态 changing/unknown 数量的每月列。我希望“Month Actuals”标签动态调整以显示在报告 运行.
时出现的所有月份列上方我创建了一个 month_count object:
library(tidyverse)
month_count <-
data %>%
summarize(month_count = n_distinct(year_month)) %>%
as_vector()
并在add_header_above函数中使用:
summary %>%
kbl("latex",
booktabs = TRUE) %>%
kable_styling(position = "left",
latex_options = c("HOLD_position",
"scale_down",
"striped")) %>%
column_spec(column = 1, width = "2in") %>%
column_spec(column = 2:99, width = ".75in") %>%
add_header_above(c(" ", "Year-to-Date" = 4, "Month-to-Date" = 3, "Monthly Actuals" = month_code))
这有效,但是,输出上的标签显示为“每月 Actuals.month_count”。关于如何 1) 改进此标签或 2) 设置动态调整 header 标签有什么想法吗?
下面是正在播放的数据,如果这对解决标签问题有用的话:
data
year_month
<chr>
2021_07
2021_08
2021_09
2021_10
2021_11
2021_12
2022_01
2022_02
summary
` Area `Yearly Target` `YTD Total` `Percent of Yearly T~` Balance `Monthly Target` `Current Month~` `Percent of Mo~` `2021 07` `2021 08`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
Area 1 416 0 0 -416 35 0 0 0 0
Area 2 520 69 13.3 -451 44 9 20.4 12 11
Area 3 624 0 0 -624 52 0 0 0 0
Area 4 50 45 90 -5 5 7 140 5 3
Area 5 0 6713 0 0 0 959 0 0 1097
Area 6 0 240 0 0 0 30 0 21 42
Area 7 125 6 4.8 -119 11 2 18.2 1 2
Area 8 120 18 15 -102 10 5 50 0 0
Area 9 3900 1127 28.9 -2773 325 141 43.4 71 96
Area 10 54 0 0 -54 5 0 0 0 0
Area 11 0 118 0 0 0 15 0 50 35
您的 month_count
是一个已命名的整数,该名称以 header 结尾。
> str(month_count)
Named int 8
- attr(*, "names")= chr "month_count"
关于如何解决这个问题的两个例子
- 删除名称属性,
names(month_count) <- NULL
并保持其他一切不变 - 根本不要使用
month_count
而是依赖ncol(summary)
:add_header_above(c(" ", "Year-to-Date" = 4, "Month-to-Date" = 3, "Monthly Actuals" = ncol(summary)-8))
使用其中任何一个,header 中的附加文本将被删除: