在R

时间:2018-07-18 15:42:37

标签: r shiny

我在下拉菜单中有一个针对欧洲国家的selectInput(),用户可以在其中单击它并选择他希望看到的国家。 现在我想做的是,我想在下拉菜单中添加三个选项,分别为“全欧洲”,“中欧”和“非中欧”。

我只能在Selectinput函数中作为占位符来做到这一点...但是我想要的是,当用户选择“非中欧”时,他获得了被视为非中央欧洲国家的输出。而且我有身份证明。意思是,我知道哪些国家/地区属于非中央市场(关于我公司的管理)...而中欧类别将包括除非中央市场之外的所有国家/地区。 并且“全欧洲”类别将包含所有11个国家/地区。

有什么建议吗?

all options in one drop-down menu

,也要清除。.我有一个包含很多变量的数据集,一个变量称为“ Office COuntry”,我希望该变量以某种方式(不知道如何)与该区域相关! ,然后用户在任何时候选择“ Non_Central”(例如,.Non_Central),那么他就直接获得有关所有非中心国家/地区的信息...希望使用户更轻松,更快捷,更灵活..

1 个答案:

答案 0 :(得分:0)

library(shiny)

countries <- list(
  "Central" = list(
    "Country A",
    "Country B"
  ),
  "Non central" = list(
    "Country C",
    "Country D"
  )
)

ui <- fluidPage(
  selectInput("sel_region", "Select regions", multiple = TRUE,
              choices = names(countries)),
  selectInput("sel_country", "Select countries", multiple = TRUE,
              choices = countries)
)

server <- function(input, output, session) {

  observe({
    x <- unlist(countries[input$sel_region])
    updateSelectInput(session, "sel_country", selected = x)
  })

}

shinyApp(ui, server)

编辑(根据OP的评论):

只有一个selectInput()

library(shiny)

countries <- list(
  "Central" = list(
    "Country A",
    "Country B"
  ),
  "Non central" = list(
    "Country C",
    "Country D"
  )
)

ui <- fluidPage(
  selectInput("sel_country", "Select countries", multiple = TRUE,
              choices = c(list("Regions" = c("All", names(countries))), countries))
)

server <- function(input, output, session) {

  observe({
    if ("All" %in% input$sel_country) {
      updateSelectInput(session, "sel_country", selected = unlist(countries))
    } else if (any(input$sel_country %in% names(countries))) {
      updateSelectInput(session, "sel_country", 
                        selected = unlist(countries[input$sel_country]))
    }
  })

}

shinyApp(ui, server)