You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RMarkdown HTML表格滚动时固定行名及指定行列?

RMarkdown HTML表格实现Excel式冻结行列

问题1:滚动列时保留行名

rmarkdown::paged_table确实没有冻结行名的功能,换用以下两个工具就能解决:

  • DT包:直接开启固定首列(行名列)和横向滚动:
    library(DT)
    datatable(mtcars, rownames = TRUE, options = list(
      fixedColumns = TRUE,
      scrollX = TRUE
    ))
    
  • flextable:用freeze()固定行名所在的第一列:
    library(flextable)
    flextable(mtcars, rownames = TRUE) %>%
      freeze(j = 1) %>%
      set_table_properties(layout = "autofit", width = 1, scroll = TRUE)
    

问题2:自定义固定行/列

这两个工具都支持灵活指定要固定的行列:

  • DT包:通过fixedColumns参数指定固定的左右列数,开启纵向滚动可自动固定表头:
    datatable(mtcars, options = list(
      fixedColumns = list(leftColumns = 2, rightColumns = 0), # 固定左侧2列
      scrollX = TRUE,
      scrollY = "400px" # 纵向滚动时表头自动固定
    ))
    
  • flextable:分别用freeze()和freeze_rows()固定列和行:
    flextable(mtcars) %>%
      freeze(j = 1:2) %>% # 固定前2列
      freeze_rows(i = 1) %>% # 固定表头行
      set_table_properties(layout = "autofit", width = 1, scroll = TRUE)
    

关于你提到的工具补充说明

  • knitr::kable()是轻量级表格输出,没有原生冻结功能,就算配合kableExtra的scroll_box()也只能实现滚动容器,没法单独固定行列,实用性不如上面两个工具。
  • rmarkdown::paged_table主打分页展示逻辑,确实没有滚动固定的配置项,你并没有遗漏设置。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:30:42