conditionalPanel闪亮隐藏复选框选项

时间:2015-08-17 21:30:06

标签: r shiny shinydashboard

我想知道如何在Shiny中使用conditionalPanel根据checkboxGroupInput上选择的内容从sliderInput中移除选项。

以下是我的代码: ui.R

library(shiny)

shinyUI(fluidPage(
        titlePanel("XXXXX"),
        sidebarLayout(
                sidebarPanel(
                        checkboxGroupInput("product.input", label = "Labels",
                                           choices=c("Product A"="P1",
                                                     "Product B"="P2",
                                                     "Product C"="P3",
                                                     "Product D"="P4",
                                                     "Product E"="P5",
                                                     "Product F"="P6"),
                                           selected=c("P1", "P2","P3","P4","P5","P6")),

                        sliderInput("prod.input", 
                                    label = "Select Month",
                                    sep="",
                                    min =1 , max = 12, value = c(5,8),step=1),
                        conditionalPanel(condition="prod.input<5",
                                         checkboxGroupInput("product.input", label = "Labels",
                                                            choices=c("Product A"="P1",
                                                                      "Product B"="P2",
                                                                      "Product E"="P5",
                                                                      "Product F"="P6")))),
        mainPanel((tabsetPanel(
                tabPanel("Table1",h2("Table Header"),tableOutput("figure"))))))))

server.R

shinyServer(function(input, output) {
        output$figure <- renderPlot({
        })
}
)

当滑块输入小于5时,我想要两个复选框&#34;产品C&#34;和&#34;产品D&#34;消失当我使用conditionalPanel时,会出现一个新列表,而不是更新相同的列表。任何关于我如何解决这个问题的线索将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

在我看来,您可以使用updateCheckboxGroupInput来解决您的问题(请参阅Shiny reference)。

答案 1 :(得分:0)

我不确定如何使用conditionalPanel更改checkboxGroupInput,但如果使用renderUI则非常简单:

ui.R

uiOutput('product.input')

server.R

output$product.input <- renderUI({
   allchoices <- c("Product A" = "P1", "Product B" = "P2", "Product C" = "P3", 
                   "Product D" = "P4", "Product E" = "P5", "Product F" = "P6")
   if(input$prod.input[2] < 5) allchoices <- allchoices[-c(3:4)]

   checkboxGroupInput("product.input", label = "Labels", choices = allchoices, 
                      selected = allchoices)
})

ps。:我不确定,但我认为一旦你在ui中声明了一个'输入对象',你就无法真正改变它。如果你要使用conditionalPanel,你可能需要声明其中的两个,每个都有一个'product.input'的可能声明。