Rtables/tern分组表格转Shiny HTML时行分组缩进异常问题
解决rtables/tern AE层级表格转HTML后缩进混乱的问题
1. 确认表格层级定义的正确性
先检查手动构建表格时的层级嵌套逻辑是否严格遵循AEBODSYS -> AEHLGT -> AEHLT的顺序,避免因层级拆分顺序错误导致缩进混乱。示例正确的层级拆分代码:
library(tern) library(rtables) # 基于tern/rtables构建AE三层级表格 ae_tbl <- basic_table() %>% split_cols_by("ARM") %>% # 按治疗组拆分列 # 第一层:系统器官分类 split_rows_by("AEBODSYS", split_fun = trim_levels_in_group("AEBODSYS")) %>% # 第二层:高位组术语 split_rows_by("AEHLGT", split_fun = trim_levels_in_group("AEHLGT")) %>% # 第三层:高位术语 split_rows_by("AEHLT", split_fun = trim_levels_in_group("AEHLT")) %>% # 分析不良事件指标(示例:严重AE) analyze_vars("AESER", afun = function(x) list(n = sum(x))) %>% build_table(adat) # adat为你的AE数据集
2. 自定义CSS强制修正层级缩进
rtables生成的HTML表格中,不同层级的行元素会自动带有level-1、level-2、level-3类名,你可以在Shiny中通过自定义CSS直接指定每个层级的左内边距,彻底解决缩进混乱问题:
library(shiny) ui <- fluidPage( # 注入自定义CSS样式 tags$style(HTML(" /* 针对rtables表格的层级行设置统一缩进 */ .rtables-table .level-1 { padding-left: 1.5em; } .rtables-table .level-2 { padding-left: 3em; } .rtables-table .level-3 { padding-left: 4.5em; } /* 可选:调整表头样式 */ .rtables-table th { text-align: center; } ")), htmlOutput("ae_html_table") ) server <- function(input, output) { output$ae_html_table <- renderUI({ # 将rtables对象转为HTML并渲染 HTML(as_html(ae_tbl)) }) } shinyApp(ui, server)
你可以根据需求调整padding-left的数值,确保层级缩进符合逻辑。
3. 使用tern专用AE表格函数
tern包提供了table_ae_summary这类专门针对不良事件汇总的封装函数,内置了层级缩进的处理逻辑,能避免手动拆分层级带来的问题:
# 使用tern专用函数构建AE汇总表格 ae_tbl <- table_ae_summary( df = adat, vars = c("AEBODSYS", "AEHLGT", "AEHLT"), # 指定层级顺序 col_split = "ARM", # 列拆分变量 ae_suffix = "AESER" # 要分析的AE指标后缀 ) %>% build_table()
用这个函数生成的表格转HTML时,缩进逻辑通常会自动适配正确。
4. 更新包版本排除bug
如果以上方法都无效,可能是rtables或tern的旧版本存在HTML渲染bug,尝试更新到最新版本:
install.packages(c("rtables", "tern"), dependencies = TRUE)
内容的提问来源于stack exchange,提问作者Vatsal Garg
相关产品推荐
相关产品推荐

