合并 DT::datatable 中的列

Merge columns in DT::datatable

我需要在闪亮的 DT::datatable 中跨列合并单元格。最好的方法似乎是使用 Javascript DataTables 扩展 RowGroup。但我不知道从查看上面 link 中的页面到在我的 shiny 应用程序中合并单元格需要采取哪些步骤(有一个 原因 我在 shiny 工作;).

的已接受答案中有部分答案,但 1) 是关于合并 (即垂直而不是水平),以及 2) R 和 Javascript 相互作用背后的机制似乎被假定为先验知识,给我留下了诸如 "which files do I need to download from where" 和 "do I need to adapt the Javascript code in them?"

之类的问题

这是我的应用程序的简化示例:

library(shiny)
library(DT)

tbl <- data.frame("A"=c("foo", 1L, "question"),
                  "B"=c("bar", 2L, "answer"))

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

server <- function(input, output) {

  output$table <- renderDT({
    datatable(tbl, rownames=F, class="",
              options = list(autoWidth=T,
                             columnDefs = list(list(className="dt-center", targets="_all"),
                                               list(width="40px", target="_all"))))
  })
}

shinyApp(ui = ui, server = server)

我想从这里开始

至此

这可能对你有用,使用 htmltools

library(shiny)
library(DT)
library(htmltools)

tbl <- data.frame("A" = c( 1L, "question"),
                  "B" = c( 2L, "answer"))

container_dt= withTags(table(
  class = 'display',
  thead(
    tr(
      th(class = 'dt-center',colspan = 2, 'AB')),
      tr(
      lapply((c('foo', 'bar')), th)))))


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

server <- function(input, output) {

    output$table <- renderDT({
        datatable(tbl, container = container_dt, rownames = F, class = "",
              options = list(autoWidth = T,
                             columnDefs = list(list(className = "dt-center", targets = "_all"),
                                               list(width = "40px", target = "_all"))))
    })
}

shinyApp(ui = ui, server = server)