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

sko*_*maz 17 r shiny dt

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

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

这个输出给了我5列.当我缩小页面时,它只隐藏列.但是,我想提前隐藏最后3列,我只想每次看到前两列.有没有办法做到这一点?

更新:

示例输出

在此输入图像描述

use*_*763 20

您可以使用DT选项或扩展名隐藏表格中的列.

如果你想让它们提前隐藏但有一个按钮让它们再次可见,那么ColVis扩展应该适合你:链接

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

options=list(columnDefs = list(list(visible=FALSE, targets=columns2hide)))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,DT的列索引似乎从0开始,而不是1,因此它是`match(columns2hide,colnames(iris)) - 1L`. (8认同)
  • 请注意,当您填写`colmuns2hide`时,您应该在列号中填写.不确定是否可以输入列名. (4认同)
  • 你不能,你必须做`match(columns2hide,colnames(iris))`,如果`columns2hide`可以包含数据中没有的列,可能会有一个`na.omit`. (2认同)
  • 列索引可能会让您措手不及。它从 0 开始,但行名称计为第 0 列。因此索引取决于您是否启用行名称。 (2认同)