在Shiny中如何合并DT::datatable中的单元格?

17

我想在shiny的DT::datatable中合并某一列的几行数据,这是否可行?

目前我的输出结果看起来像这样:

enter image description here

但是理想情况下,我想合并这些行,并希望输出结果看起来像这样:

enter image description here

在DT::datatable中是否能够像这样合并行数呢?


1
根据 @yihue 的说法,您无法在数据表中合并单元格:https://github.com/rstudio/DT/issues/346 - Carl
2个回答

16

借助于 datatables-rowsgroup 库,这是一个示例:

library(shiny)
library(DT)

dat <- iris[c(1,2,3,51,52,53,101,102,103), c(5,1,2,3,4)]

ui <- fluidPage(
  DTOutput("table")
)

server <- function(input, output){
  output[["table"]] <- renderDT({
    dtable <- datatable(dat, rownames = FALSE, 
                        options = list(
                          rowsGroup = list(0) # merge cells of column 1
                        ))
    path <- "U:/Data/shiny/DT/www" # folder containing dataTables.rowsGroup.js
    dep <- htmltools::htmlDependency(
      "RowsGroup", "2.0.0", 
      path, script = "dataTables.rowsGroup.js")
    dtable$dependencies <- c(dtable$dependencies, list(dep))
    dtable
  })
}

shinyApp(ui, server)

这里输入图片描述


很棒的解决方案!也许将这个插件添加到DT库中会是一个很棒的功能,或者创建一个全新的R库来存放DT插件? - SBista
1
作为一个不使用Javascript的用户,我很难理解您的建议。您能否澄清,在跳转到您提供链接的页面之后,我需要做些什么才能包含您建议的代码呢? - Nibood_the_slightly_advanced
@NBE 请查看 https://dev59.com/97bna4cB1Zd3GeqPa3Bw - Stéphane Laurent
这真的很有帮助,不过我想知道是否可以调整rowGroup以使用两列来合并重复单元格? - Beeba
如何使用 rowsGroup 和 rowGroup。即 GROUP 1、GROUP 2、rowsGroup。 - kraggle
当你说“#包含dataTables.rowsGroup.js的文件夹”时,那个js文件是什么?我从哪里获取它? - Angelo

3

嘿,据我所知,在DT中无法实现这一点,但我有另一种方法可以实现。

最初的回答

 kable(c, align = "c") %>%
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left",font_size = 12)%>%
  column_spec(1, bold = T) %>%
  collapse_rows(columns = 1, valign = "middle")

最初的回答:请尝试一下,它能正常运行 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接