如何将搜索窗口小部件添加到闪亮的应用程序中?

时间:2019-04-25 11:42:26

标签: r shiny shiny-reactivity

我希望能够向我的应用添加搜索窗口小部件,链接:https://aquayaapps.shinyapps.io/big_data/,这样当我键入任何单词(即water)时,它会输出所有包含water的单词。

到目前为止,我只能添加搜索小部件,但是我不知道如何包括交互性,例如当我在搜索栏上键入内容时,就会显示结果。

sidebarSearchForm(textId = "searchText", buttonId = "searchButton",label = "Search dataset",
                        icon = shiny::icon("search"))

这是用户界面,但我不知道如何使其具有交互性。

搜索栏应该是交互式的,这样当我输入单词时,它会输出搜索结果。

1 个答案:

答案 0 :(得分:1)

这取决于您想要什么输出,但是原理是相同的。我假设您有某种数据表,并且希望包含搜索项的任何行。

因此您需要:

  • 作为表或数据表的输出,由输入(在这种情况下为input$searchText进行过滤)
  • req()(仅当您按下搜索时才显示) 按钮

这是一个非常丑陋的模型,但希望您能理解。

library(shiny)
library(shinydashboard)
library(data.table)

header <- dashboardHeader(title = "Search function")

sidebar <- dashboardSidebar(
  sidebarSearchForm(textId = "searchText", buttonId = "searchButton", 
                    label = "Search dataset", icon = shiny::icon("search"))
)

body <- dashboardBody(tableOutput("filtered_table"))

ui <- dashboardPage(title = 'Search', header, sidebar, body)


server <- function(input, output, session) {

      example_data <- data.table(ID = 1:7, word = c("random", "words", "to", 
                                                    "test", "the", "search", "function")) 

      output$filtered_table <- renderTable({
        req(input$searchButton == TRUE)
        example_data[word %like% input$searchText]
      })

    }

    shinyApp(ui = ui, server = server)

编辑:仅需添加,如果您确实希望用户可以搜索的数据表可见,并且您使用包dataTableOuput中的renderDataTableDT,则该搜索功能包括桌子。