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)
我已将此处的答案改编为您需要在
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)