Shiny:合并 DT::datatable 中的单元格

Posted

技术标签:

【中文标题】Shiny:合并 DT::datatable 中的单元格【英文标题】:Shiny: Merge cells in DT::datatable 【发布时间】:2017-01-21 21:16:50 【问题描述】:

我想在闪亮的 DT::datatable 的列中合并几行。有可能吗?

目前我可以输出如下内容:

但理想情况下,我想合并行并希望输出如下内容:

DT::datatable 中是否可以合并这样的行?

【问题讨论】:

根据@yihue,您无法合并数据表中的单元格:github.com/rstudio/DT/issues/346 【参考方案1】:

这可以在datatables-rowsgroup library 的帮助下实现。这是一个例子:

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 库中添加这个插件会是一个很棒的功能,或者可能为 DT 插件创建一个全新的 R 库? 作为非 javascript 用户,我很难听从您的建议。您能否说明在登陆您链接到的页面和包含您建议的代码之间我需要做什么? @NBE 看看***.com/questions/58028528/… 这真的很有帮助,不过我想知道是否可以调整 rowGroup 以便使用两列来合并重复的单元格?【参考方案2】:

嘿,据我所知,在 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")

请尝试一下,它可以工作:)

【讨论】:

以上是关于Shiny:合并 DT::datatable 中的单元格的主要内容,如果未能解决你的问题,请参考以下文章

渲染 JavaScript 会破坏 R Shiny DT (DataTable) 中的页面导航和反应功能

如何在Shiny R中丢弃DT :: datatable上的用户编辑

R Shiny 中 DT::datatable() 中冻结标头问题的解决方法

R Shiny DT - 使用反应式编辑表中的值

DT::datatable 的条纹

DT::datatable - 选择要删除的行并写入没有闪亮的 csv