2015-04-19 28 views
8

Ich habe einen Namen choices Steckplatz in selectInput, und möchte den Namen, der mit der Auswahl verknüpft ist, lieber als den Wert abrufen.Abrufen des Wahlnamens statt des Werts

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]) 
    } 
) 

Welche produziert:

enter image description here

Stattdessen würde ich die Textausgabe wie Choice 1 zu lesen. Wie kann ich das machen?

Antwort

6

Setzen Sie Ihre Auswahl in ein Objekt in global.R und verwenden Sie es dann in server.R und 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

Während eine vernünftige Lösung, dies umständlich ist, weil diese übergibt die Last Spur zu halten der Auswahlvektor und das Eingabeobjekt slotname zu mir - ich hätte lieber Shiny das gemacht. – tchakravarty

+2

Ich bekomme Ihren Kommentar nicht. Sie geben dem Auswahlvektor einfach ein Symbol. Das ist es. Was genau hältst du für umständlich? – nicola

+0

Danke für Ihre Antwort - da es keine besseren Antworten gibt, werde ich dies als akzeptiert markieren. – tchakravarty

Verwandte Themen