Javascript 如何在DT中使用ColVis插件在自定义容器中隐藏多个列?

Javascript 如何在DT中使用ColVis插件在自定义容器中隐藏多个列?,javascript,r,datatables,shiny,dt,Javascript,R,Datatables,Shiny,Dt,我有一个闪亮的应用程序,其中我使用DT库来可视化一个表。我正在使用容器渲染表 sketch = htmltools::withTags(table( class = 'display', thead( tr( th(rowspan = 2, 'Name'), th(rowspan = 2, 'Description'), th(rowspan = 2, 'From'), th(rowspan = 2, 'To'), th(rowspan = 2, 'D

我有一个闪亮的应用程序,其中我使用DT库来可视化一个表。我正在使用容器渲染表

sketch = htmltools::withTags(table(
class = 'display',
thead(
  tr(
    th(rowspan = 2, 'Name'),
    th(rowspan = 2, 'Description'),
    th(rowspan = 2, 'From'),
    th(rowspan = 2, 'To'),
    th(rowspan = 2, 'Duration'),
    th(colspan = 3, 'Rain', style="text-align:center"),
    th(colspan = 3, 'Flow', style="text-align:center"),
    th(colspan = 3, 'Depth', style="text-align:center"),
    th(colspan = 3, 'Velocity', style="text-align:center")
  ),
  tr(
    lapply(rep(c('Min', 'Max', 'Mean'), 4), th)
  )
)))
  output$table2 <- DT::renderDataTable({
    datatable(eventSelection[[input$options]], class = 'cell-border stripe table-hover', rownames = FALSE, container = sketch,
              extensions = 'Buttons', options = list(scrollX = TRUE, dom = 'Bfrtip', buttons = I('colvis'))
              ) %>%
      formatDate(c(3,4), method='toLocaleString') %>%
      formatRound(5:17, digits = 3)
  })
sketch=htmltools::withTags(表(
class='display',
泰德(
tr(
th(rowspan=2,'名称'),
th(行间距=2,'说明'),
th(rowspan=2,‘From’),
th(行间距=2,'至'),
th(行间距=2,'持续时间'),
th(colspan=3,'Rain',style=“text align:center”),
th(colspan=3,'Flow',style=“文本对齐:居中”),
th(colspan=3,'Depth',style=“文本对齐:居中”),
th(colspan=3,“速度”,style=“文本对齐:中心”)
),
tr(
lapply(代表(c(最小值)、最大值、平均值)、第4位)
)
)))
产出$2%
formatDate(c(3,4),method='toLocaleString')%>%
formatRound(5:17,数字=3)
})
该表如下所示:

我希望在列可见性选项卡中有雨、流、深度、速度选项,并能够在单击它们时隐藏相应的最小、最大和平均统计列。最好的办法是什么


谢谢

我可以通过使用datatables文档来实现这一点

代码如下:

  sketch = htmltools::withTags(table(
class = 'display',
thead(
  tr(
    th(rowspan = 2, 'Name'),
    th(rowspan = 2, 'Description'),
    th(rowspan = 2, 'From'),
    th(rowspan = 2, 'To'),
    th(rowspan = 2, 'Duration'),
    th(colspan = 3, 'Rain', style="text-align:center"),
    th(colspan = 3, 'Flow', style="text-align:center"),
    th(colspan = 3, 'Depth', style="text-align:center"),
    th(colspan = 3, 'Velocity', style="text-align:center")
  ),
  tr(
    lapply(rep(c('Min', 'Max', 'Mean'), 4), th)
  )
)))



 button_list <- list(list(extend='colvisGroup', text="Rain", show=c(5:7)),
                      list(extend='colvisGroup', text="Flow", show=c(8:10)),
                      list(extend='colvisGroup', text="Depth", show=c(11:13)),
                      list(extend='colvisGroup', text="Velocity", show=c(14:16)),
                      list(extend='colvisGroup', text="Hide all", hide=c(5:16))
                      )

  output$table2 <- DT::renderDataTable({
    datatable(eventSelection[[input$options]], class = 'cell-border stripe table-hover', rownames = FALSE, container = sketch,
              extensions = 'Buttons', options = list(scrollX = TRUE, dom = 'Bfrtip',
                                                     columnDefs = list(list(visible=FALSE, targets=c(5:16))),
                                                     buttons = button_list)
              ) %>%
      formatDate(c(3,4), method='toLocaleString') %>%
      formatRound(5:17, digits = 3)
  })
sketch=htmltools::withTags(表(
class='display',
泰德(
tr(
th(rowspan=2,'名称'),
th(行间距=2,'说明'),
th(rowspan=2,‘From’),
th(行间距=2,'至'),
th(行间距=2,'持续时间'),
th(colspan=3,'Rain',style=“text align:center”),
th(colspan=3,'Flow',style=“文本对齐:居中”),
th(colspan=3,'Depth',style=“文本对齐:居中”),
th(colspan=3,“速度”,style=“文本对齐:中心”)
),
tr(
lapply(代表(c(最小值)、最大值、平均值)、第4位)
)
)))
按钮列表%
formatRound(5:17,数字=3)
})