widgets tutorial examples ejemplos r search user-interaction shiny

tutorial - Cambiar de forma interactiva las opciones de selección de entrada



shiny r tutorial (3)

Debes hacer que la UI sea reactiva. No lo he probado (también omito datos), pero debería funcionar, creo. En server.R agrega:

output$selectUI <- renderUI({ selectInput("partnerName", "Select your choice", searchResult()[,1] ), })

Y en ui.R reemplaza el selectInput con:

htmlOutput("selectUI")

Originalmente creé esta brillante interfaz que incluye un parámetro "identificación de la compañía" y "fecha", pero aquí tenemos un problema: la mayoría de la gente no conoce las empresas con las que trabajamos, solo su nombre, es decir, (McDonalds, Radioshack) .

Entonces, idealmente, quiero crear una función de búsqueda como esta

Mi idea actual es pasar una tabla que incluya una lista de todas nuestras compañías asociadas y sus identificaciones a global.R. Luego pase la entrada de texto como las variables de búsqueda y realice la búsqueda en el lado del servidor. Sin embargo, me pierdo sobre cómo pasar searchResults de nuevo a la interfaz de usuario en un panel de selección de entrada?

Mi código actual:

ui.R

library(shiny) shinyUI(pageWithSidebar( sidebarPanel( textInput("nameSearch", "Or, Search for company name", ''McDonald''), selectInput("partnerName", "Select your choice", list( "searchResults" ), br(), submitButton("Update View"), br(), ),

servidor.R

shinyServer(function(input, output) { #subTable searchResult<- reactive({ subset(partners, grepl(input$nameSearch, partners$name)) }) output$searchResults <- renderTable({ searchResult[,1] })

global.R

partners<- read.csv("partnersList.csv", fill=TRUE)

partnersList está solo en este formato

name id ------------------ McDonalds 1 Wendy''s 2 Bestbuy 3


En la versión Shiny 0.8 (donde lo he probado), en server.R agregue lo siguiente:

shinyServer(function(input, output, session) { observe({ # This will change the value of input$partnerName to searchResult()[,1] updateTextInput(session, "partnerName", label = "Select your choice", value = searchResult()[,1]) }) })

Ahora la función dentro de shinyServer tiene una session argumento adicional.

Puede omitir la etiqueta si no necesita cambiarla.

No necesita cambiar nada en ui.R


Respuesta de Rstudio''s JC:

Claro, simplemente use un TextInput para la cadena de búsqueda, y use renderUI / uiOutput para hacer una selectInput dinámica. Entonces, el resto de su código puede depender del valor de selectInput. (Asegúrese de buscar NULL o lo que sea al leer el valor de selectInput, porque comenzará sin ningún valor).