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).