【问题标题】:R Shiny - downloading a csv to the working directoryR Shiny - 将 csv 下载到工作目录
【发布时间】:2016-04-24 06:25:46
【问题描述】:

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

1) 用户按下按钮

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

我希望这会自动发生,因为最终我将使用 checkboxGroupboxInput 连接它以循环遍历数据并生成一组过滤后的 .csv。

这是我目前能得到的最接近的值,fileToDownload 代表我的数据框:

ui.R:

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

服务器.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

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

【问题讨论】:

  • 您的问题找到合适的答案了吗?

标签: r download shiny


【解决方案1】:

我认为您希望用户单击一个按钮并让shiny 将数据保存到您指定的某个文件夹中。这是正确的吗?

如果这就是您想要的,那么创建一个按钮,当用户单击该按钮时,它将只是 write.csv(&lt;DF-to-write&gt;, &lt;filename-to-use&gt;) 或类似的东西。

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

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

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

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

    李>

另外请记住,在服务器上运行时,您需要确保 Shiny 有权写入您希望它保存文件的文件夹。

【讨论】:

  • 谢谢,我会尝试合并。我只需要一个 actionButton 而不是 downloadHandler 吗?我明白你的意思,我的浏览器设置为将下载的文件存储到我的下载目录。如果我可以更改该设置,闪亮是否会将我正在创建的文件路径视为文件路径,而不仅仅是名称的一部分?再次感谢!
猜你喜欢
  • 2019-04-07
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2015-04-03
相关资源
最近更新 更多