Объединить столбцы в DT :: datatable - PullRequest
3 голосов
/ 20 сентября 2019

Мне нужно объединить ячейки по столбцам в DT :: datatable в блестящем.Лучше всего использовать расширение Javascript DataTables RowGroup .Но я не знаю, какие шаги предпринять от просмотра страницы по ссылке выше до слияния ячеек в моем блестящем приложении (есть причина , я работаю в блестящем;).

В принятом ответе есть * частичный ответ на этот вопрос о стекопереработке , но 1) о слиянии строк (т. Е. По вертикали вместо горизонтали) и 2) механике взаимодействияR и Javascript, как представляется, считаются предшествующими знаниями, оставляя меня с такими вопросами, как «какие файлы мне нужно скачать откуда» и «мне нужно адаптировать в них код Javascript?»

Вотупрощенный пример моего приложения:

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)

В котором я хотел бы перейти от этого

current table

к этому

table with headers mergedtwo

1 Ответ

2 голосов
/ 20 сентября 2019

Это может работать для вас, используя 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)

enter image description here

...