Shiny app: Matrix-checkbox

columns <- c("name","time","budget")
projects <- c("A","B")

library(shiny)
library(tidyverse)
library(glue)

ui <- fluidPage(
  uiOutput("myui"),
  verbatimTextOutput("tout")
)

server <- function(input, output, session) {
output$myui <- renderUI({
  tagList(
    map(
      projects,
      ~ {
        div(
          style = "grid-gap: 1em;display:flex;align-items: center;",
          tags$label(glue("Project {.}")),
          shiny::checkboxGroupInput(
            inputId = glue("project_{.}"),
            label = "",
            choices = columns,
            inline = TRUE
          )
        )
      }
    )
  )
})

output$tout <- renderPrint({
 inputs_gathered <-  map(
    projects,
    ~input[[glue("project_{.}")]]) %>% set_names(projects)
 str(inputs_gathered)
})
}

shinyApp(ui, server)
1 Like