我希望能够向我的应用添加搜索窗口小部件,链接:https://aquayaapps.shinyapps.io/big_data/,这样当我键入任何单词(即water)时,它会输出所有包含water的单词。
到目前为止,我只能添加搜索小部件,但是我不知道如何包括交互性,例如当我在搜索栏上键入内容时,就会显示结果。
sidebarSearchForm(textId = "searchText", buttonId = "searchButton",label = "Search dataset",
icon = shiny::icon("search"))
这是用户界面,但我不知道如何使其具有交互性。
搜索栏应该是交互式的,这样当我输入单词时,它会输出搜索结果。
答案 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
中的renderDataTable
和DT
,则该搜索功能包括桌子。