【问题标题】:Get the group label from a grouped list of choices in SelectInput (RShiny)从 SelectInput (R Shiny) 中的分组选项列表中获取组标签
【发布时间】:2019-06-21 21:51:08
【问题描述】:

如何从selectInput 带有分组选项的下拉框中的选定输入中获取组名?比如Building中选择BankNature中选择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 问题和示例已更新。希望这能回答您的问题。

标签: r shiny selectinput


【解决方案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)
    })
  }
)

【讨论】:

  • 我想我可以将组名和选项名连接起来作为每个选项的值,以使它们独一无二。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 2020-12-25
  • 2021-06-18
  • 2018-06-14
  • 2020-09-14
  • 2015-09-03
  • 2017-12-02
  • 1970-01-01
相关资源
最近更新 更多