Автоматическая загрузка нескольких файлов в R-Shiny

Я пытаюсь выяснить, как получитьdata.frame подмножество себя, а затем написать файл .csv для каждого подмножества. Я пишуshiny приложение, которое будет генерировать файлы шаблонов для различных инструментов, и мне нужно иметь возможность получить файл для каждой партии / пластины / что угодно. Очевидно, что мы могли бы выполнить ручную сортировку, но это побеждает цель.

Например, скажем, что у меня естьdata.frame с четырьмя столбцами с именем 1) PlateID, 2) SampleName, 3) Well и 4) Комментарии, и я хочу установить под PlateID так, чтобы каждая отдельная пластина имела свой собственный файл.

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)
  }
}) 

Поэтому я хочу добавить несколько функций, и я не знаю, как к ним подойти. Во-первых, я хотел бы лучше контролировать, куда записываются данные. Я хотел бы, чтобы он входил в тот же файл, что и мои входные файлы, но я не уверен, как заставить это? Я пытался сделать что-то вроде:

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

но вinFile$datapath представляется временная папка / файл, который создается, а не прямая ссылка на оригинальный файл!

Кроме того, я хочу написать что-то, что будет действовать какdownloadHandler в смысле наличия кнопки, которая будет загружать файлы при нажатии, но я не думаю, что смогу использовать это в этом сценарии, потому что я пишу несколько файлов. Если я не прав, ПОЖАЛУЙСТА, дайте мне знать, так как это облегчит жизнь. Я думаю, что я буду использоватьactionButton и переменную счетчика, так что счетчик равен значению кнопки + 1 до тех пор, пока кнопка не будет активирована, и в этом случае они равны до конца функции. Очевидно, у меня было бы условие, которое обрабатывает остальное, но это тривиально, поэтому давайте сосредоточимся на подмножестве файлов и загрузим!

Спасибо!

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

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