如何在R Markdown(HTML)中创建可打印的6×6空白方格表?
解决R Markdown生成6×6空白方格表的问题
嘿,我来帮你搞定这个6×6空白方格表的需求!你的现有代码能生成表格,但确实存在行高不足、表格拥挤的问题,而且代码可以大幅简化。咱们一步步来解决:
核心问题分析
你遇到的行高问题,是因为font_size只控制字体大小,并不会直接调整单元格的高度。要做出标准方格表,关键是给每个单元格设置固定的宽高值,让它们变成正方形;而代码冗余的问题,只需要用循环或批量处理替代重复的column_spec/row_spec调用即可。
简化版解决方案代码
library(tidyverse) library(kableExtra) # 创建6×6空白矩阵 TableGrid <- matrix(NA, nrow = 6, ncol = 6) options(knitr.kable.NA = '') TableGrid %>% kbl(row.names = NA, col.names = NA, linesep = "") %>% kable_styling(full_width = FALSE) %>% # 批量设置所有列的宽高、左边框 column_spec(1:6, width = "1.5cm", height = "1.5cm", border_left = TRUE, color = "black") %>% # 单独给最后一列加上右边框 column_spec(6, border_right = TRUE) %>% # 批量设置所有行的下边框和字体大小 row_spec(1:6, font_size = 9, extra_css = "border-bottom: 1px solid black;") %>% # 单独给第一行加上上边框 row_spec(1, extra_css = "border-top: 1px solid black; border-bottom: 1px solid black;")
代码解释
- 批量处理列:用
1:6一次性选中所有列,统一设置width和height(这里设为1.5cm,你可以根据打印需求调整,比如改成"4em"),同时加上左边框;最后单独给第6列补右边框,完成表格的左右边框封闭。 - 批量处理行:同样用
1:6选中所有行,统一设置字体大小和下边框;再单独给第一行加上上边框,完成表格的上下边框封闭。 - 固定宽高:
width和height设为相同值,确保每个单元格都是标准正方形,打印后刚好适合手写内容。 - 简化冗余代码:把原来6次重复的
column_spec和row_spec调用压缩成4行,代码更简洁易维护。
额外优化建议
如果需要调整方格大小,只需要修改width和height的数值即可(比如改成"2cm"会更大);如果想要更粗的边框,可以把1px改成2px。
内容的提问来源于stack exchange,提问作者BoTz
相关产品推荐
相关产品推荐

