R Shiny - 将csv下载到工作目录

时间:2016-01-18 22:57:12

标签: r download shiny

我有一个Shiny应用程序,我想完成以下任务:

1)用户按下按钮

2)数据框被导出到.csv,保存在工作目录中(使用server.R和ui.R),或理想情况下保存一级。

我希望这是自动发生的,因为最终我要将它与checkboxGroupboxInput连接以循环数据并生成一组过滤的.csv。

这是我目前最接近的,fileToDownload表示我的数据框:

ui.R:

downloadButton("rptDownload", "Download Report"),

server.R:

output$rptDownload <- downloadHandler(
   filename = function() {
     paste(getwd(), '/rpt/test.csv',sep = '')
   },
   content = function(con) {
     write.csv(fileToDownload, file = file.path(con))
   }
 )

当我从Chrome浏览器运行它时,它会下载到.csv,但它会以我想要的文件路径命名为:C - Work-Project_A-Shiny_DB-rpt-test .csv格式。它将getwd()和/ rpt /视为名称的一部分而不是文件路径。它会下载到我的下载文件夹,而不是当前的工作目录。

有关如何改进代码的任何建议?

请注意,我已尝试合并其他主题的一些建议。其中包括:

Shiny (R): Download selection in selectInput to local machine

Automatic multi-file download in R-Shiny

https://groups.google.com/forum/#!topic/shiny-discuss/MaN4-ia6wfk

但这些似乎让我更远离完成我想要做的事情。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为你想要的是让用户点击一个按钮并让shiny将数据保存到你指定的某个文件夹。这是对的吗?

如果这就是您想要的,那么创建一个按钮,当用户点击该按钮时,该按钮只会write.csv(<DF-to-write>, <filename-to-use>)或沿着这些行显示。

无需使用downloadHandlerdownloadHandler函数特定于导出数据:用户单击此按钮,您的应用程序会为其导出数据。当您以这种方式使用数据时,数据显示在Download文件夹中的原因是您已将浏览器设置为将所有下载的文件存储到Download目录。

如果需要,您可以为SaveSelectedData设置一个按钮,为DownloadSavedData设置另一个按钮。

  • SaveSelectedDatawrite.csv您指定文件夹感兴趣的df。

  • DownloadSavedData会将数据导出给您的用户(您无法指定将其下载到用户系统的哪个位置 - 这取决于在他们的浏览器设置上。)

另请注意,在服务器上运行时,您需要确保Shiny有权写入您希望将文件保存到的文件夹。