如何在Shiny R中使用downloadHandler将多个csv文件下载到zip中

时间:2020-07-17 21:26:41

标签: r csv shiny zip

我是Shiny的新手,我已经阅读了很多类似的问题,但是我尝试过的解决方案对我来说并不奏效。 我正在尝试下载多个csv文件(在Shiny应用程序中处理过的数据)并将其压缩。我正在使用downloadHandler来绕过将使用仪表板的同事的各种计算机上的权限/文件夹。 谁能告诉我如何解决这个问题?我不断收到的错误是:

文件警告(file,ifelse(append,“ a”,“ w”)): 无法打开文件“ maldiprocres_ 通用名称 .csv”:没有此类文件或目录 警告:文件错误:无法打开连接

我到处都读到了这可能与Shiny的临时文件夹中的写权限有关。这是真的?如何使写入此临时文件夹成为可能?有关信息,我正在Mac上的R中工作。 我还意识到循环不是最有效的,但是允许在脚本中进行很多检查-处理数据(s是未处理数据的列表)并在需要时打印输出,并且文件名正确,我只是无法下载已处理的csv文件/压缩文件夹。 感谢您的帮助。

#server
datasetInput <- reactive({
                switch(input$dtset,
                       "peaks" = detectedPeaks(),
                       "centroided" = baselineCorrectedSpectra())
        })

    
         
output$downloadZip <- downloadHandler(
   filename = function(){
     paste0("maldiprocresults",".zip")
   },
   content = function(con){
    tmpdir <- tempdir()
    setwd(tempdir()) 
    a=getwd()
    files <- c()
 
     for (i in 1:length(s)){
    x<-as.matrix(datasetInput()[[i]])
     y<-metaData(s[[i]])
     e<-y$file
     z<-gsub((paste(a,"/MALDIquantForeign_uncompress/", sep="")),"",e)
     f<-(paste("maldiprocres", z, sep="_" ))
     print(f)
    if(input$downloadType == ".csv")
    write.csv(x,f)
    else write.table(x,f)
    files<-c(x,files)
    
}       
    zip(zipfile=con, files=files)
     
  }
  ,
   contentType = "application/zip"
 )

0 个答案:

没有答案