Shiny SidebarPanel 仅在选中复选框后才选择输入

问题描述

我正在尝试制作一个闪亮的侧边栏面板,其中有一个始终存在的输入,并且只有在选中复选框后才会出现。我能找到的所有相关解决方案都在谈论将 checkBoxInput 用于 output 上的条件,但我不确定如何实现这一点。为了显示我需要什么,这是我的代码片段:

require(shiny)


ui <- fluidPage(

    titlePanel('My App'),sidebarPanel(selectInput(inputId = "id1",label = "something 1",choices = c('a','b','c')),checkBoxInput("test_check","Do you want to this?",value = FALSE),uIoUtput("test"),# checkBox to see if the user wants a comparison
             
                     selectInput(inputId = "id2",label = "something2",'c'))
    ),mainPanel(
        tabPanel("Some Info",htmlOutput(outputId = "info1"))
    ))

server <- function(input,output,session){}
shinyApp(ui = ui,server = server)

所以我想让 id2 仅在复选框被选中时出现在侧边栏中,但不知道如何去做。谢谢。

编辑:添加一个最小的可重现示例。

解决方法

您可以将一些 UI 移动到服务器以检查该框,当一个输入依赖另一个输入时,这是我所做的,然后您只需要使用 req()

ui <- fluidPage(
  
  titlePanel('My App'),sidebarPanel(selectInput(inputId = "id1",label = "something 1",choices = c('a','b','c')),checkboxInput("test_check","Do you want to this?",value = FALSE),uiOutput("test"),# checkbox to see if the user wants a comparison
               uiOutput("id2")

  ),mainPanel(
    tabPanel("Some Info",htmlOutput(outputId = "info1"))
  ))

server <- function(input,output,session){
  output$id2 <- 
    renderUI({
      req(input$test_check)
      selectInput(inputId = "id2",label = "something2",'c'))
    })
  
}
shinyApp(ui = ui,server = server)