使用checkboxGroupInput呈现多个UIOutput

使用checkboxGroupInput呈现多个UIOutput,r,shiny,R,Shiny,有没有办法在一个闪亮的应用程序中使用checkboxGroupInput来呈现多个UIOutput: server <- function(input, output) { output$control1 <- renderUI({ req(input$devs) if(input$devs %in% c("A")){ selectInput("a", "control A", choices = c("a", "b")) } })

有没有办法在一个闪亮的应用程序中使用
checkboxGroupInput
来呈现多个UIOutput:

server <- function(input, output) {

  output$control1 <- renderUI({
    req(input$devs)
    if(input$devs %in% c("A")){
      selectInput("a", "control A", choices = c("a", "b"))
    }
  })

  output$control2 <- renderUI({
    req(input$devs)
    print(input$devs)
    if(input$devs %in% c("B")){
      selectInput("b", "controlB", choices = c("c", "d"))
    }
  }) 

}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput("devs", "Select controls", choices = c("A", "B")),
      uiOutput("control1"),
      uiOutput("control2")
    ),
    mainPanel()
  )
)

shinyApp(ui = ui, server = server)

server我想您只需要在if语句中做一点小改动。
在%“B”
中输入$devs%将返回
FALSE-TRUE
,这将触发if语句中的代码

您只需将其更改为:
“B”%in%input$devs

完整代码如下:

server <- function(input, output) {

  output$control1 <- renderUI({
    req(input$devs)
    if("A" %in% input$devs){
      selectInput("a", "control A", choices = c("a", "b"))
    }
  })

  output$control2 <- renderUI({
    req(input$devs)
    if("B" %in% input$devs){
      selectInput("b", "controlB", choices = c("c", "d"))
    }
  }) 

}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput("devs", "Select controls", choices = c("A", "B")),
      uiOutput("control1"),
      uiOutput("control2")
    ),
    mainPanel()
  )
)

shinyApp(ui = ui, server = server)

server您希望您的输出是什么?我希望输出是独立的。因此,如果选择输入A,则显示控制1,如果选择B,则显示控制2。如果选择了两者,则两者都显示。对不起,我回到笔记本电脑时会更新问题。
choices - list()
choices[["A"]] <- c("a", "b")
choices[["B"]] <- c("c", "d")

observe({
   lapply(input$devs, function(letter){ 
      output[[paste0("control", letter) <- renderUI({
        if(letter %in% input$devs){
          selectInput(letter, paste0("control", letter), choices = choices[[letter]])
        }
      })
   }
})