Блестящая реализация динамического пользовательского интерфейса

У меня есть следующий фрейм данных:

a<-rep(c("cat","dog","bird"),each=5)
b<-letters[1:length(a)]
c<-data.frame("pet"=a,"level"=b)

Я хотел бы создать блестящее приложение, в котором есть раскрывающееся меню для выбора pet, а затем динамический набор флажков, которые отображаются под ними, с соответствующими значениями level для параметров флажков.

Таким образом, выбор cat вызовет группу флажков a,b,c,d,e, а затем выбор dog изменит эти флажки на отображение только f,g,h,i,j и т. Д.

Спасибо за помощь


person testname123    schedule 15.03.2014    source источник


Ответы (1)


Вы можете использовать функцию updateCheckboxGroupInput внутри наблюдателя (?observe Функция observe "наблюдает" input$petи будет автоматически повторно выполняться при изменении input$pet, а затем обновит группу флажков).

Например :

a<-rep(c("cat","dog","bird"),each=5)
b<-letters[1:length(a)]
c<-data.frame("pet"=a,"level"=b)

runApp(list(
  ui = pageWithSidebar(
    headerPanel("Example"),

    sidebarPanel(
      selectInput("pet", "Select a pet", choices = levels(c$pet), selected = levels(c$pet)[1]),
      tags$hr(),
      checkboxGroupInput('levels', 'Levels', choices = c$level[c$pet == levels(c$pet)[1]])
    ),

    mainPanel()
  ),
  server = function(input, output, session) {

    observe({
      pet <- input$pet

      updateCheckboxGroupInput(session, "levels", choices = c$level[c$pet == pet])
    })
  }
))
person Julien Navarre    schedule 15.03.2014