r - 如何在 R Shiny select-Input 中获取特定值而不是选择的打印名称
问题描述
我正在构建一个闪亮的应用程序,其中有一个selectizeInput。要选择的选项是国家/地区名称,存储在 data.frame 及其三位数代码中。
国家
姓名 | 代码 |
---|---|
阿鲁巴岛 | ABW |
阿富汗 | AFG |
... | ... |
在我闪亮的应用程序中,我在 UI 部分调用selectizeInput ,如下所示:
selectizeInput(inputId = 'inSelect',
label = "countries",
choices = country$name,
multiple = TRUE,
options = list(maxItems = 4,
placeholder = 'select up to 4 countries'))
选择国家时,我会在 inSelect 变量中获得它们的名称列表。
例如,当我选择阿富汗时,inSelect的值为阿富汗。
是否有可能获得不同的值作为输出。所以不是名称,而是代码,存储在它旁边的表中?
例如,当我选择阿富汗时,InSelect获得 Value AFG。
我知道,我可以将选项名称与它们的值一起写下来。但是Country是一个大约 200 行的表。
解决方案
这是一个快速应用程序,可以满足您的需求,简而言之,您可以将国家/地区定义为矢量的名称code
library(shiny)
country <- c("Aruba","Afghanistan")
code <- c("ABW","AFG")
choices <- code
names(choices) <- country
ui <- fluidPage(
selectInput(inputId = 'inSelect',
label = "countries",
choices = choices
multiple = TRUE),
textOutput("selected")
)
server <- function(input, output) {
output$selected <- renderText({
input$inSelect
})
}
shinyApp(ui = ui, server = server)
出于您的目的,供 data.framedf
使用:
choices <- df$code
names(choices) <- df$country
这样,两者之间的关联就被定义为应用程序加载时的单个向量,您无需一遍又一遍地查找表中的代码(这个答案更快)。
推荐阅读
- angular - Angular Universal Docker 构建的问题
- node.js - 如何从节点 js 获取 Knex 中的 RAISE INFO/NOTICE?
- python - 列表理解:为一个列表中的项目分配值(如果它们包含在另一个列表中)时出现语法错误
- .net - Docker 构建找不到 EntityFramework.props
- java - 我应该如何使用另一个类的适配器在片段类中显示 listView
- linux - 在 AWS Linux 机器上升级 MariaDB
- java - Spring boot + Thymeleaf - 具有回退到默认值的多个模板解析器
- javascript - 如何在 javascript 中创建深度嵌套的对象?
- php - 项目获批后,使用 Youtube API 上传的视频仍标记为私有
- spring - 从 SpringBoot 中的 API 获取特定的响应值