如何修改Shiny中selectInput的选项显示名且不影响返回引用值
实现方法
该需求完全可以实现,核心是利用Shiny中selectInput组件choices参数对命名向量的支持特性:命名向量的元素名称会作为下拉框的展示文本,向量本身的取值会作为input$id的实际返回值。
修改后的代码示例如下:
iris1 <- iris iris1$New <- paste0(iris$Species, "New") # 构造符合要求的命名向量:值为Species原始值,名称为New列的展示文本 custom_choices <- setNames( object = unique(iris1$Species), nm = unique(iris1$New) ) # 传入selectInput即可 selectInput("id", "label", choices = custom_choices)
按照上述写法,下拉框会展示setosaNew、versicolorNew、virginicaNew三个选项,调用input$id获取到的返回值就是对应的原始Species值setosa、versicolor、virginica。
如果需要快速验证效果,可以运行下面的完整最小示例:
library(shiny) # 先构造自定义选项向量 iris1 <- iris iris1$New <- paste0(iris$Species, "New") custom_choices <- setNames( object = unique(iris1$Species), nm = unique(iris1$New) ) ui <- fluidPage( selectInput("id", "请选择物种", choices = custom_choices), # 打印返回的实际值验证效果 verbatimTextOutput("return_value") ) server <- function(input, output) { output$return_value <- renderPrint({ paste("input$id实际返回值:", input$id) }) } shinyApp(ui, server)
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

