Get data from uiOutput

I made this example for you.

library(shiny)
library(purrr) # for map
library(glue) # for nice string interpolation
ui <- fluidPage(
  numericInput("num_controls_choice",
               "Choose how many controls to make",
               value = 1,
               min = 0,
               max = 10),
  uiOutput("dynamic_controls"),
  verbatimTextOutput("view_dynamic_controls")
)

server <- function(input, output, session) {
  output$dynamic_controls <- renderUI({
    ncc <- req(input$num_controls_choice)
    
    map(seq_len(ncc),
        ~{
          nm <- glue("control_{.}")
          sliderInput(inputId = nm ,
                      label = nm,
                      min = 0,
                      value = if(isTruthy(input[[nm]]))
                                 {input[[nm]]} else{0},
                     max = 10)
        })
  })

output$view_dynamic_controls <- renderPrint({
  ncc <- req(input$num_controls_choice)
  cat("num controls choice :", ncc, "\n")
  walk(
    seq_len(ncc),
    ~ cat(
      "\n", glue("control_{.}"),
      input[[glue("control_{.}")]]
    )
  )
})
}

shinyApp(ui, server)
1 Like