R Shiny - Получение метки радиокнопки - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь извлечь метку выбранной опции в радиокнопке. Например, у меня есть переключатель «dist», и выбрана опция «norm»

ui <- fluidPage(
  radioButtons("dist", "Distribution type:",
               c("Normal" = "norm",
                 "Uniform" = "unif",
                 "Log-normal" = "lnorm",
                 "Exponential" = "exp")),
  plotOutput("distPlot")
)

server <- function(input, output) {
  x1 = input$dist
  print(x1) # gives 'norm' but I want 'Normal'
}

shinyApp(ui, server)

Я хотел бы знать самый простой способ реализовать это без использования какой-либо внешней конструкции, такой как javascript и т. Д.

1 Ответ

0 голосов
/ 13 января 2019

Прежде всего, предоставленный код не работает - код сервера должен быть заключен в observe({ ... }), чтобы он функционировал.

Что касается вашего вопроса - к этому есть два пути.

  1. Если параметры известны заранее и не являются динамическими, вы можете определить список параметров как отдельную переменную, которая доступна как для пользовательского интерфейса, так и для сервера (если пользовательский интерфейс и сервер определены в отдельных файлы, затем поместите его в файл global.R). Затем просто найдите имя на основе значения.

    dist_options <- c("Normal" = "norm",
                      "Uniform" = "unif",
                      "Log-normal" = "lnorm",
                      "Exponential" = "exp")
    
    ui <- fluidPage(
      radioButtons("dist", "Distribution type:", dist_options),
      plotOutput("distPlot")
    )
    
    server <- function(input, output) {
      observe({
        x1 = input$dist
        print(names(which(dist_options == x1)))
      })
    }
    

    inyApp (пользовательский интерфейс, сервер)

  2. Если параметры являются динамическими, вам нужно будет подключиться к пользовательскому коду JavaScript. Shiny должен будет запросить у javascript значение метки для конкретного ввода на основе его значения, а javascript потребуется передать его обратно на блестящий .

...