2015-04-19 1 views
8

Ho uno slot choices denominato in selectInput e desidero recuperare il nome associato alla scelta, piuttosto che il valore.Recupera il nome della scelta anziché il valore

MWE:

shinyApp(
    ui = fluidPage(
    sidebarPanel(
    selectInput("foo", 
       label = "Select choice here:", 
       choices = c("Choice 1" = "Choice1", 
          "Choice 2" = "Choice2", 
          "Choice 3" = "Choice3"), 
       selected = "Choice1", 
       multiple = TRUE), 
    textOutput("nameOfChoice") 
), 
    mainPanel()), 
    server = function(input, output) { 
    output$nameOfChoice = renderText(input$foo[1]) 
    } 
) 

che produce:

enter image description here

Invece, vorrei l'output di testo da leggere Choice 1. Come posso fare questo?

risposta

6

Inserire le proprie scelte in un oggetto in global.R e quindi utilizzarlo in entrambi server.R e ui.R.

In global.R:

fooChoices<-c("Choice 1" = "Choice1", 
         "Choice 2" = "Choice2", 
         "Choice 3" = "Choice3") 

In ui.R:

selectInput("foo", 
      label = "Select choice here:", 
      choices = fooChoices) 

In server.R:

output$nameOfChoice = renderText(names(fooChoices[fooChoices==input$foo])) 
+2

Mentre una soluzione ragionevole, questo è ingombrante perché questa passa l'onere di tenere traccia di il vettore di scelta e lo slotname dell'oggetto di input per me - preferirei che Shiny l'abbia fatto. – tchakravarty

+2

Non capisco il tuo commento. Basta dare un simbolo al vettore di scelta. Questo è tutto. Cosa pensi sia ingombrante? – nicola

+0

Grazie per la risposta - dato che non ci sono risposte migliori, contrassegnerò questo come accettato. – tchakravarty