2015-04-19 13 views
8

Mam nazwany choices gniazdo w selectInput i chciałbym pobrać nazwę związaną z wyborem, a nie wartość.Pobierz nazwę wyboru zamiast wartości

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

która produkuje:

enter image description here

Zamiast tego chciałbym wyjście tekstu do przeczytania Choice 1. Jak mogę to zrobić?

Odpowiedz

6

Połóż swoje wybory w obiekcie w global.R, a następnie użyj go w obu server.R i ui.R.

W global.R:

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

W ui.R:

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

W server.R:

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

Podczas odpowiednim rozwiązaniu jest to kłopotliwe, ponieważ przechodzi ciężar śledzenie wektor wyboru i obiekt wejściowy nazwa-gniazda dla mnie - wolałbym, żeby Shiny to zrobił. – tchakravarty

+2

Nie dostaję twojego komentarza. Po prostu dajesz symbol wektorowi wyboru. to jest to! Co według Ciebie jest uciążliwe? – nicola

+0

Dziękuję za odpowiedź - biorąc pod uwagę, że nie ma lepszych odpowiedzi, zaznaczę to jako zaakceptowane. – tchakravarty