隐藏闪亮数据表中的列,但保持可搜索

问题描述 投票:0回答:1

Shiny 中的 DT 包生成一个带有搜索栏的表格,可以搜索表格中的每一列。我有一列元数据,我不想在表中显示,但如果我使用搜索栏搜索,我仍然希望显示这些行。

例如,下面的应用程序包含标题为

searchCol 
的列。这一栏只是字母。我想在实际表格中隐藏此列,并且希望能够使用 DT 搜索栏搜索字母
b
,并显示第二行。

有没有办法隐藏该列,但仍然可以与搜索栏一起使用?

library(shiny)
library(DT)
ui <- fluidPage(
    DTOutput('tbl1'),
)
server <- function(input, output, session) {
    output$tbl1 <- DT::renderDT(server = TRUE, {
        datatable(
            cbind(data.frame(replicate(3,sample(0:1,26,rep=TRUE))), data.frame(searchCol = letters)),
            escape = FALSE,
            rownames = FALSE, 
            filter = list(position = "top", clear = FALSE, plain = TRUE),             
            selection = "single",
            options = list(
                autoWidth = TRUE,
                pageLength = 50,
                lengthMenu = c(50, 100, 1000), 
                dom = 'Blfrtip',             
                buttons = c('copy', 'excel')
            )
        )
    })
}
shinyApp(ui, server)
r shiny dt
1个回答
1
投票

我已将此处的答案改编为您需要在

DT::datatable
中使用的格式。您可以使用
columnDefs
定义不同列的渲染选项,
targets
定义您所指的列。请注意,JS 库
datatables
从 0 开始计算列。

library(shiny)
library(DT)
ui <- fluidPage(
  DTOutput('tbl1'),
)
server <- function(input, output, session) {
  output$tbl1 <- DT::renderDT(server = TRUE, {
    datatable(
      cbind(data.frame(replicate(3,sample(0:1,26,rep=TRUE))), data.frame(searchCol = letters)),
      escape = FALSE,
      rownames = FALSE, 
      filter = list(position = "top", clear = FALSE, plain = TRUE),             
      selection = "single",
      options = list(
        autoWidth = TRUE,
        pageLength = 50,
        lengthMenu = c(50, 100, 1000), 
        dom = 'Blfrtip',             
        buttons = c('copy', 'excel'),
        columnDefs = list(
          list(
            targets = 3,
            searchable = TRUE,
            visible = FALSE
          )
        )
      )
    )
  })
}
shinyApp(ui, server)
© www.soinside.com 2019 - 2024. All rights reserved.