Как создать динамический рендеринг Shiny R с таблицей, определяемой количеством загруженных файлов CSV?

Я создаю веб-приложение, которое после загрузки CSV-файлов преобразует данные и затем должно иметь возможность выводить несколько таблиц. Количество таблиц зависит строго от информации, содержащейся в CSV-файлах, поэтому рассчитывается в процессе преобразования данных. Я создал списокlst с кадрами данных, которые должны быть выведены. Длина списка - это количество таблиц, которые должны быть созданы. После поиска в сети я столкнулся с очень похожим вопросом (Вот), на который, к сожалению, пока нет ответа. У кого-нибудь есть идеи как это решить?

Часть моего кода (не все, из-за значительного преобразования данных), где я хотел бы заменить фиксированныйmax_table с переменнойlength(data_set()):

library(shiny)

ui <- fluidPage(
  fluidRow(column(3,
                  wellPanel(
                    fileInput(inputId = "files",
                              label = "Choose cvs files",
                              accept=c('text/csv', 
                                       'text/comma-separated-values,text/plain', 
                                       '.csv'),
                              multiple = TRUE))),
           column(5, offset = 1, 
                  uiOutput("tables")
                  )
           )
  )

max_table <- 5
server <- function(input,output){


  data_set <- reactive({
    if(is.null(input$files)){
      return(NULL)
    }

    lst <- list()
    for(i in 1:length(input$files[,1])){
      lst[[i]] <- read.csv(input$files[[i, 'datapath']], sep = ",", header = TRUE, skip = 4, dec = ".")
    }
    lst
  })

  output$tables <- renderUI({
    plot_output_list <- lapply(1:max_table, function(i) {
      tablename <- paste("tablename", i, sep="")
      tableOutput(tablename)
    })
    do.call(tagList, plot_output_list)
  })


  for (i in 1:max_table){
    local({
      my_i <- i
      tablename <- paste("tablename", my_i, sep="")
      output[[tablename]] <- renderTable({data_set()[[my_i]] 
      })
    })    
  }
}

shinyApp(ui = ui, server = server)

Любая помощь приветствуется!

Ответы на вопрос(1)

Ваш ответ на вопрос