Download automático de vários arquivos no R-Shiny

Estou tentando descobrir como obter umdata.frame subconjunto e, em seguida, escreva um arquivo .csv para cada subconjunto. Estou escrevendo umshiny aplicativo que irá gerar arquivos de modelo para diferentes instrumentos, e eu preciso conseguir um arquivo para cada lote / prato / qualquer coisa. Obviamente, poderíamos fazer uma classificação manual, mas isso acaba com o objetivo.

Por exemplo, diga que eu tenho umdata.frame com 4 colunas nomeadas 1) PlateID, 2) SampleName, 3) Well e 4) Comments e eu quero subconjunto pelo PlateID para que cada prato individual tenha seu próprio arquivo.

output$multiDownload <- renderText({
#templateData() just loads the data, nothing special;
#If you wanna see it let me know, but I think it's bulky
  tempData <- templateData()
  if(is.null(tempData)){return(NULL)}

    #If there are more than one plate, subset by plate ID and write each file
    if(max(tempData$PlateID) > 1){
    for(i in 1:max(tempData$PlateID)){
        tempSubsetForWrite <- subset(tempData, tempData$PlateID == i, select =   c("names", "well", "comments"))
        write.csv(tempSubsetForWrite, file = paste0("file ", i, " of ", max(tempData$PlateID), row.names = FALSE)
      }
  } else {
    write.csv(tempData, file = "file", row.names = FALSE)
  }
}) 

Então, eu quero adicionar alguns recursos e não sei como abordá-los. Primeiro, eu gostaria de ter um melhor controle de onde os dados são gravados. Gostaria que ele fosse para o mesmo arquivo que meus arquivos de entrada, mas não sei ao certo como forçar isso? Eu tentei fazer algo como:

inFile <- input$templateGenerationFile
write.csv(tempData, paste0(inFile$datapath, "/file ", i, " of ", max(tempData$PlateID))

mas eminFile$datapath&nbsp;parece ser uma pasta / arquivo temporário que é gerado e não um link direto para o arquivo original!

Além disso, estou querendo escrever algo que funcione como umdownloadHandler&nbsp;no sentido de ter um botão que fará o download dos arquivos ao clicar, mas acho que não posso usá-lo nesse cenário porque estou escrevendo vários arquivos. Se eu estiver errado, por favor me avise, pois isso tornaria a vida mais fácil. Estou pensando em usar umactionButton&nbsp;e uma variável de contador para que o contador seja o valor do botão + 1 até que o botão seja ativado; nesse caso, eles serão iguais até o final da função. Obviamente, eu teria um condicional que lida com o resto, mas isso é trivial, então vamos focar no subconjunto de arquivos e fazer o download!

Obrigado!