我想知道如何在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时,会出现一个新列表,而不是更新相同的列表。任何关于我如何解决这个问题的线索将不胜感激。
谢谢!
答案 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'的可能声明。