R Shiny-获取单选按钮的标签

时间:2019-01-13 07:18:41

标签: r shiny radio-button label

我试图在单选按钮中提取所选选项的标签。 例如,我有一个名为“ 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 :(得分:0)

首先,提供的代码不起作用-服务器代码需要包装在observe({ ... })中才能起作用。

关于您的问题-有两种解决方法。

  1. 如果选项是预先已知的,并且不是动态的,则可以将选项列表定义为可同时用于UI和服务器的单独变量(如果ui和服务器是分别定义的,文件,然后将其放在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)))
      })
    }
    

    shinyApp(用户界面,服务器)

  2. 如果选项是动态的,则需要参与自定义javascript代码。 Shiny将需要根据其值ask javascript获得特定输入的标签值,而javascript将需要communicate it back to shiny