如何在闪亮的应用程序中通过 dataTableProxy 创建跨多个数据表的全局搜索框?
How can I create a global search box across multiple DataTables via dataTableProxy in a shiny app?
我在下面使用 Iris 数据集获得了这个可重现的代码。我想知道如何在当前 table 下方创建一个额外的 table 或者在更好的情况下如何创建一个标签集选项卡以包含额外的 table.
下面的代码和输出截图:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
textInput('search2', "Search 2"),
DTOutput('dt')
),
server = function(input, output, session) {
DTproxy <- dataTableProxy("dt")
output$dt = renderDT(iris)
observeEvent(input$search2, {
updateSearch(DTproxy, keywords = list(global = input$search2, columns = NULL))
})
})
我想这是 this 上的 follow-up?
这是一个简单的示例,其中包含 3 个表格和 3 个选项卡,全部取决于全局搜索字段。我们可以通过 lapply
或模块减少代码,但我认为一开始这样更容易理解:
library(shiny)
library(DT)
ui <- fluidPage(
titlePanel("Tabsets"),
sidebarLayout(
sidebarPanel(
textInput('search', "Search"),
),
mainPanel(
tabsetPanel(id = "tabsetPanelID",
type = "tabs",
tabPanel("Tab1", DTOutput('DT1')),
tabPanel("Tab2", DTOutput('DT2')),
tabPanel("Tab3", DTOutput('DT3'))
)
)
)
)
server <- function(input, output, session) {
output$DT1 = renderDT(iris)
DTProxy1 <- dataTableProxy("DT1")
output$DT2 = renderDT(iris)
DTProxy2 <- dataTableProxy("DT2")
output$DT3 = renderDT(iris)
DTProxy3 <- dataTableProxy("DT3")
observeEvent(c(input$search, input$tabsetPanelID), {
updateSearch(DTProxy1, keywords = list(global = input$search, columns = NULL))
updateSearch(DTProxy2, keywords = list(global = input$search, columns = NULL))
updateSearch(DTProxy3, keywords = list(global = input$search, columns = NULL))
})
}
shinyApp(ui, server)
我在下面使用 Iris 数据集获得了这个可重现的代码。我想知道如何在当前 table 下方创建一个额外的 table 或者在更好的情况下如何创建一个标签集选项卡以包含额外的 table.
下面的代码和输出截图:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
textInput('search2', "Search 2"),
DTOutput('dt')
),
server = function(input, output, session) {
DTproxy <- dataTableProxy("dt")
output$dt = renderDT(iris)
observeEvent(input$search2, {
updateSearch(DTproxy, keywords = list(global = input$search2, columns = NULL))
})
})
我想这是 this 上的 follow-up?
这是一个简单的示例,其中包含 3 个表格和 3 个选项卡,全部取决于全局搜索字段。我们可以通过 lapply
或模块减少代码,但我认为一开始这样更容易理解:
library(shiny)
library(DT)
ui <- fluidPage(
titlePanel("Tabsets"),
sidebarLayout(
sidebarPanel(
textInput('search', "Search"),
),
mainPanel(
tabsetPanel(id = "tabsetPanelID",
type = "tabs",
tabPanel("Tab1", DTOutput('DT1')),
tabPanel("Tab2", DTOutput('DT2')),
tabPanel("Tab3", DTOutput('DT3'))
)
)
)
)
server <- function(input, output, session) {
output$DT1 = renderDT(iris)
DTProxy1 <- dataTableProxy("DT1")
output$DT2 = renderDT(iris)
DTProxy2 <- dataTableProxy("DT2")
output$DT3 = renderDT(iris)
DTProxy3 <- dataTableProxy("DT3")
observeEvent(c(input$search, input$tabsetPanelID), {
updateSearch(DTProxy1, keywords = list(global = input$search, columns = NULL))
updateSearch(DTProxy2, keywords = list(global = input$search, columns = NULL))
updateSearch(DTProxy3, keywords = list(global = input$search, columns = NULL))
})
}
shinyApp(ui, server)