Реактивное выпадающее меню в блестящей приборной панели R - PullRequest
0 голосов
/ 08 июня 2018

новичок в блестящей здесь.Я создаю панель инструментов и имею разные категории и подкатегории.я пытаюсь сделать следующее:

Когда экран загружается, я бы хотел, чтобы все категории и подкатегории были доступны для выбора, но если я выберу категорию '1', то только 'sub1' и 'sub2 'должен быть доступен для выбора.Так как это фильтруется по категории.Как бы я реализовать это в файле сервера в блестящем?краткий пример моего кода выглядит следующим образом: (на сервере установлен код sudo)

UI -->     
    dashboardSidebar(
        sidebarMenu(
          menuItem("CSF2", tabName = "CSF2", icon=icon("bar-chart")),
            selectInput("category", "Select a category", c("1", "2"),
            selectInput("subcategory", "Select a subcategory",       c("sub1", "sub2", "sub3" "sub4"),
        )),


server--->
shinyServer(function(input,output){
    if (category_selected == 1){subcategoryOptions= c(sub1,sub2)}
    if (category_selected == 2){subcategoryOptions= c(sub3,sub4)}

}

1 Ответ

0 голосов
/ 08 июня 2018
library(shiny)
library(shinydashboard)

UI <- dashboardSidebar(
  sidebarMenu(
    menuItem("CSF2", tabName = "CSF2", icon = icon("bar-chart")),
    selectInput("category", "Select a category", c("1", "2")),
    selectInput("subcategory", "Select a subcategory",       
                c("sub1", "sub2", "sub3", "sub4"))
  )
)


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

  observe({
    updateSelectInput(
      session, "subcategory", "Select a subcategory",
      choices = switch(input$category,
        "1" = c("sub1", "sub2"),
        "2" = c("sub3", "sub4"))
    )
  })

}

shinyApp(UI, server)
...