Shiny selectInput命名选项如何显示变量值而非变量名且保留映射
解决方案
shiny中selectInput的choices参数遵循如下规则:命名向量的名称为下拉菜单的显示文本,向量的实际值为选中后返回给服务端的取值,你之前的写法把显示内容和返回值写反了,调整键值对关系即可实现需求。
你可以用setNames函数来构造符合要求的选择项向量,完整可运行代码如下:
library(shiny) library(shinythemes) #ui.r ui <- fluidPage( uiOutput('input'), # 可选:加一行验证选中后返回的值 verbatimTextOutput('selected_val') ) #server.r server = function(input, output) { output$input <- renderUI({ variable1 <- 'dog' variable2 <- 'cat' variable3 <- 'mouse' selectInput(inputId = 'something', label = 'select animal', # 核心修改:setNames(返回值向量, 显示文本向量) choices = setNames( object = c('animal1', 'animal2', 'animal3'), nm = c(variable1, variable2, variable3) )) }) # 可选:验证返回值 output$selected_val <- renderPrint({ paste("选中后返回给服务端的值为:", input$something) }) } shinyApp(ui, server)
上述代码运行后,下拉选项会显示dog/cat/mouse,用户选中对应选项后,input$something会拿到对应的animal1/animal2/animal3,不会影响后续逻辑的使用。
内容的提问来源于stack exchange,提问作者CodingBiology
相关产品推荐
相关产品推荐

