Как установить значения в selectInput R Shiny для длинного набора параметров - PullRequest
0 голосов
/ 21 июня 2020

Я создаю приложение R Shiny, в котором у меня есть очень длинный список опций для selectInput. В зависимости от выбранной вами опции значение будет меняться. Я знаю, что для небольшого списка параметров вы можете сами установить значения в функции сервера следующим образом:

server <- function(input, output) {
  output$graph <- renderPlot({
    player <- switch(input$var, 
                   "LeBron James" = 23,
                   "Kobe Bryant" = 24,
                   "DeMar DeRozan" = 10,
                   "Kyle Lowry" = 7)
    plotGraph(player)

  })
}

Но в моем списке есть как минимум 100 вариантов, и, конечно же, не чисто и неэффективно устанавливать значения вот так на все 100 вариантов. Есть ли способ установить значения в зависимости от выбранной опции без необходимости делать это вручную?

Ниже мой код в моей функции пользовательского интерфейса

ui <- fluidPage(
    titlePanel(h1("Fantasy Dashboard")),
    
    sidebarLayout(
        sidebarPanel(h2("Player Name Goes Here"),
            selectInput("playername", 
                        label = "Choose a player",
                        choices = player_choices,
                        selected = NULL),
        ),
        

        mainPanel(plotOutput("graph"))
        
    )
)

Выбор будет сохранен в player_choices . Эти варианты считываются из текстового файла. И в зависимости от выбранной опции для переменной player должно быть установлено соответствующее значение. Заранее спасибо!

1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте:

library(shiny)

playernames <- list("Smith","Johnston","Andrew")

shinyApp(
  ui = fluidPage(
    uiOutput("selectname"),
    textOutput("result")
  ),
  server = function(input, output) {
    output$selectname <- renderUI( {
      selectInput("playername", "Choose player",playernames)})
    output$result <- renderText({
      paste("You chose", input$playername)
    })
  }
)

Список имен игроков также может быть реактивным и изменяться другими входами.

...