flextable中add_header_lines添加的自定义表头如何单独调整字号
仅调整
add_header_lines()自定义表头格式的实现方法 问题核心原因
add_header_lines() 不会把自定义表头放到独立的表格区域,而是直接在原有header块的最上方插入新的独立行。插入完成后,整个part = "header"的区域是和正文逻辑一致的多行结构:
- 行索引
i = 1:就是通过add_header_lines()添加的自定义表头 - 行索引
i = 2:就是原本数据框自带的列名行(crime、Jan、Feb、Mar)
之前直接调用fontsize(size = 15, part = "header")没有指定行号时,函数会默认对header区域内的所有行生效,因此才会同时修改两类表头的格式。
具体实现方案
所有flextable的格式设置函数(包括fontsize()、bold()、align()等)都支持i参数指定目标行号,只要在设置格式时给i赋值为自定义表头所在的行索引,就可以完全独立调整它的格式,不影响原有列名的样式。
可直接运行的修改后示例代码:
library(flextable) df <- data.frame(crime = c("assault", "homicide", "burglary"), Jan = c(5, 2, 7), Feb = c(2, 4, 0), Mar = c(1, 2, 1)) flex <- flextable(df) # 在原有表头上方插入自定义行 flex <- add_header_lines(flex, values = "This is a header") # 仅针对header区域的第1行(即自定义添加的表头)设置15号字 flex <- fontsize(flex, i = 1, size = 15, part = "header") # 如需给原有列名单独设置格式,同理指定i=2即可,两类样式完全独立 # flex <- fontsize(flex, i = 2, size = 10, part = "header") flex
补充注意事项
- 如果你连续多次调用
add_header_lines()插入多行自定义表头,行号会按照从上到下的插入顺序顺延:比如插入2行自定义表头时,最顶部的第一行是i=1,第二行在其下方是i=2,原本的列名行会顺移到i=3的位置,按照实际行顺序计数即可。 - 这套带行号定位的逻辑对header、body、footer所有表格区域的格式设置都生效,不需要额外调用其他特殊函数。
内容的提问来源于stack exchange,提问作者Logowilliams
相关产品推荐
相关产品推荐

