1

I am trying to create a Shiny app that uploads a dynamic number of CSV files and display them through renderTable. I used the answer from this link for the dynamic fileInput. I added an eventReactive to read the CSV files and a renderUI for the dynamic number of tableOutputs. I don't get any errors when I run the code, so I don't know where the reactivity breaks.

Server:

shinyServer(function(input, output, session) {

  output$fileInputs=renderUI({
    n<-input$nfiles
    html_ui = " "
    for (i in 1:n){

     html_ui <- paste0(html_ui, fileInput(inputId= paste0("fileupload",i), label=paste0("fileupload",i),accept = c("text/csv", "text/comma-separated-values,text/plain",".csv")) )

}
HTML(html_ui)
  })


  Reading <-eventReactive(input$Read, {
    lst<-list()
    n<-input$nfiles
    for (i in 1:n){
      file<-paste0("fileupload",i)
      inFile<-input$file

      if (is.null(inFile))
        return(NULL)
    lst[[i]] <- read.csv(inFile$datapath)

    }
    lst
  })

output$fileoutputs <- renderUI({

  n<-input$nfiles
 for (i in 1:n){

     output[[paste0("table",i)]] <- renderTable( Reading()$lst[[i]] )
     tableOutput(paste0("table",i))
  }

  })

})

UI:

shinyUI(pageWithSidebar(
  headerPanel('Variable files'),
  sidebarPanel(
    numericInput("nfiles", "number of files", value = 2, min = 1, step = 1),
    uiOutput("fileInputs"),
    actionButton("Read", "read")


  ),
  mainPanel(
    uiOutput("fileoutputs")

  )
))
Jota
  • 16,711
  • 7
  • 57
  • 91
Souha
  • 11
  • 1

0 Answers0