파일을 추가하면 자동으로 바인드하는 기능을 만들고 싶었는데 removeUI 기능에서 input의 인자를 제거하지 못하는 것을 확인하였다. 따라서 session을 reset하는 기능으로 이를 대체하였다.

library(DT)
library(shiny)
ui <- fluidPage(
  mainPanel(
    actionButton("refresh", "초기화"),
    actionButton("add", "파일을 추가하려면 눌러주세요."),
    tags$div(
      fileInput(
        'element0','파일을 업로드해주세요'),id='element'),
    DTOutput('o1')
  )
)

server <- function(input, output,session) {
  # 초기화 버튼 
  observeEvent(input$refresh, {
    session$reload()
  })
  # 파일 추가 버튼
  observeEvent(
    input$add, {
      insertUI(
        selector = "#add",
        where = "afterEnd",
        ui =tags$div(
          fileInput(
            paste0('element',input$add),'파일을 업로드해주세요'),id='element'))
    })
  
  #input의 element0, element1, element2 ... 의 datapath가 변경되면 재실행
  df=eventReactive(
    input[[paste0('element',input$add)]]$datapath,{
      ls=list()
      for(file in grep('element',names(input),value=T)){
        ls[[file]]=read.csv(input[[file]]$datapath)
      }
      dplyr::bind_rows(ls)
    })
  output$o1=renderDT({df()})
}

shinyApp(ui = ui, server = server)