R:根据用户选择生成任意多个输出的循环

R:根据用户选择生成任意多个输出的循环,r,shiny,R,Shiny,我想创建一个循环,根据用户的选择生成尽可能多的输出。 例如,如果用户选择10个模型,那么这10个模型的10个输出将出现 注意:我知道输入不能在UI中使用。我只是把它作为一个参考,让它更清楚地理解我在做什么 以下是我尝试过的: shinyApp(ui= fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'), for(i in 1:length(input$aa)){

我想创建一个循环,根据用户的选择生成尽可能多的输出。 例如,如果用户选择10个模型,那么这10个模型的10个输出将出现

注意:我知道输入不能在UI中使用。我只是把它作为一个参考,让它更清楚地理解我在做什么

以下是我尝试过的:

shinyApp(ui= fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'),
                       for(i in 1:length(input$aa)){
                         function(i){uiOutput(paste0('prob', i))}
                       }),
         server = function(input, output){
           for(i in input$aa){
             assign(paste('output$prob',i,sep = ''),renderUI({paste('model',i)}))
           }
                     })

谢谢。

shinny
中,
因为
循环工作不好,最好使用
lappy
。在下面,您可以找到使用
lappy
的解决方案,您还可以查看

库(闪亮)
用户界面
library(shiny)

ui <- fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'),
                uiOutput("formulas")
)

server <- function(input, output, session) {
  output$formulas <- renderUI({
    lapply(input$aa, function(model) {
      verbatimTextOutput(paste0("prob_", model))
    })
  })
  
  observeEvent(input$aa, {
    lapply(input$aa, function(model) {
      output[[paste0("prob_", model)]] <- renderPrint({paste0("model ", model)})
    })
  })
  
}

shinyApp(ui, server)