从 SelectInput (R Shiny) 中的分组选项列表中获取组标签
Posted
技术标签:
【中文标题】从 SelectInput (R Shiny) 中的分组选项列表中获取组标签【英文标题】:Get the group label from a grouped list of choices in SelectInput (RShiny) 【发布时间】:2019-06-21 21:51:08 【问题描述】:如何从selectInput
带有分组选项的下拉框中的选定输入中获取组名?比如Building
中选择Bank
,Nature
中选择Nature
后如何得到Building
?
更新示例:
# demoing optgroup support in the `choices` arg
shinyApp(
ui = fluidPage(
selectInput("state", "Choose a word:",
list(`Building` = list("Apartment", "Bank", "Hospital"),
`Nature` = list("Bank", "River", "Orange"),
`Color` = list("Blue", "Orange", "Red"))
),
textOutput("result")
),
server = function(input, output)
output$result <- renderText(
paste("You chose", input$state)
)
)
一种方法是存储所有选项及其分组标签的变量,然后搜索该选项来自哪个组。但是当组之间有重叠的选择时,这不起作用。
【问题讨论】:
您可以将列表保存在变量lst
中,然后通过names(which(sapply(lst, "%in%", x = input$state)))
获取列表名称
@BigDataScientist 感谢您的评论。是的,如果选择在组中是唯一的,则此方法有效。但是,如果不同组中有重叠的选择怎么办?有没有通用的方法来处理这种情况?
那么期望的输出是什么:两者,第一个,最后一个?
@BigDataScientist 问题和示例已更新。希望这能回答您的问题。
【参考方案1】:
您可以给每个输入一个值而不是直接使用它们的名称,如下所示:
shinyApp(
ui = fluidPage(
selectInput("state", "Choose a word:",
list(`Building` = list("Apartment"="ap", "Bank"="bk", "Hospital"="hp"),
`Nature` = list("Bank"="bk1", "River"="rv", "Orange"="or"),
`Color` = list("Blue"="bl", "Orange"="or1", "Red"="rd"))
),
textOutput("result")
),
server = function(input, output)
output$result <- renderText(
paste("You chose", input$state)
)
)
【讨论】:
我想我可以将组名和选项名连接起来作为每个选项的值,以使它们独一无二。谢谢。以上是关于从 SelectInput (R Shiny) 中的分组选项列表中获取组标签的主要内容,如果未能解决你的问题,请参考以下文章
从 selectInput 到 facet_wrap 的多个变量:R Shiny
Shiny R:当 selectInput 值改变时重置其他输入值
r Shiny 使 textInput 以先前的 selectInput 为条件