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

How do I add search widget to my shiny app?

我希望能够在我的应用程序中添加一个搜索小部件,link:https://aquayaapps.shinyapps.io/big_data/ 这样,当我输入任何单词(即水)时,它会输出所有包含水的单词。

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

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

这是 UI 但我不知道如何让它具有交互性。

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

这有点取决于你想要什么输出,但原理是一样的。我假设您有某种数据 table,并且您想要包含搜索词的任何行。

因此你需要:

  • 作为 table 或数据 table 的输出,由输入过滤(在本例中为 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)

编辑:只是补充一下,如果你确实想要用户可以搜索的数据table,如果你使用 DT 包中的 dataTableOuputrenderDataTable ,其中包括带有 table 的搜索功能。