使用 DT 包隐藏响应数据 table 中的某些列

Hide certain columns in a responsive data table using DT package

我正在尝试使用 DT 包为我闪亮的应用程序创建响应数据 table。我想提前隐藏某些列。例如:

library("shiny")
library("DT")
shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      iris,extensions="Responsive"
    )
  }
)

此输出为我提供了 5 列。它只在我缩小页面时隐藏列。但是,我想提前隐藏最后 3 列,我只想每次都看到前两列。有办法吗?

更新:

示例输出

您可以使用 DT 选项或扩展隐藏 table 中的列。

如果您希望它们提前隐藏但有一个按钮可以使它们再次可见,ColVis 扩展程序应该适合您:link

如果您只想隐藏它,请添加以下选项(不记得我现在在哪里看到它的文档了..)

options=list(columnDefs = list(list(visible=FALSE, targets=columns2hide)))

我有另一种方式,我喜欢它的可读性。虽然它没有解决列编号问题。

library("shiny")
library("DT")
library(magrittr)
columns2hide <- match('Sepal.Width', colnames(iris))
shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      {
        dataTableProxy(outputId = 'tbl') %>%
          hideCols(hide = columns2hide)
        iris
      },
      extensions="Responsive"
    )
  }
)

dataTableProxy 创建一个代理对象,您可以使用几个函数对其进行操作(请参阅 ?dataTableProxy)。 例如,当单击按钮时,hiding/showing/selecting/add/... table 的行和列可能很方便。 因为默认情况下它有 deferUntilFlush = TRUE 它会等待 table 的处理直到它的下一代。在这种情况下,这只是发生在下一行。