如何基于DataFrame自动配置Shiny pickerInput的选项映射?
解决Shiny pickerInput动态映射显示名与实际值的问题
你可以通过setNames()函数快速实现从数据框到pickerInput选项的映射,无需手动逐个构建list:
核心代码修改如下:
pickerInput( "example", "Example: ", choices = setNames(dat$names, dat$display) )
setNames(dat$names, dat$display)会生成一个命名向量,其中显示文本对应dat$display的内容,实际传递的值对应dat$names的内容,完全符合pickerInput对choices参数的要求。
如果需要和你手动编写的list结构完全一致,也可以将结果转为list:
choices = as.list(setNames(dat$names, dat$display))
以下是完整的可复现代码:
library(shiny) library(tidyverse) library(shinyWidgets) dat <- data.frame( names = c("CODE", "STATE_OR_PROVINCE", "LOCATION_CODE"), display = c("Code", "State or province", "Location code") ) ui <- fluidPage( sidebarLayout( sidebarPanel( pickerInput( "example", "Example: ", choices = setNames(dat$names, dat$display) ) ), mainPanel() ) ) server <- function(input, output) { observe({ input$example %>% glimpse() }) } # Run the application shinyApp(ui = ui, server = server)
内容的提问来源于stack exchange,提问作者anorlondo
相关产品推荐
相关产品推荐

