我试图在单选按钮中提取所选选项的标签。 例如,我有一个名为“ 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等)的情况下实现此功能的最简单方法。
答案 0 :(得分:0)
首先,提供的代码不起作用-服务器代码需要包装在observe({ ... })
中才能起作用。
关于您的问题-有两种解决方法。
如果选项是预先已知的,并且不是动态的,则可以将选项列表定义为可同时用于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(用户界面,服务器)
如果选项是动态的,则需要参与自定义javascript代码。 Shiny将需要根据其值ask javascript获得特定输入的标签值,而javascript将需要communicate it back to shiny。