我有以下数据框架:
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
,等等。
Thanks for the help
你可以在观察者内部使用updateCheckboxGroupInput
函数(?observe
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])
})
}
))