Это зависит от того, какой вывод вы хотите, но принцип будет таким же.Я предполагаю, что у вас есть какая-то таблица данных, и вам нужна любая строка, содержащая поисковый запрос.
Следовательно, вам необходимо:
- Выход в виде таблицы или данных, отфильтрованный по входу (в данном случае
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
, который включает в себя функцию поиска сстол.