【问题标题】:Add download button in Rmd file but do not display a table在 Rmd 文件中添加下载按钮但不显示表格
【发布时间】:2020-01-29 02:18:47
【问题描述】:

我可以使用数据表 DT 库显示表格并添加下载链接,例如

mtcars %>% DT::datatable(extensions = 'Buttons', 
                                        options = list(dom = 'Bfrtip', 
                                                       pageLength = 200,
                                                       buttons = list('copy', 'csv', 'excel')))

但是,我没有使用 mtcars,我使用的是大型 csv 训练数据,最终用户希望能够下载到 csv。

上面的块,当与我的真实数据一起使用时会给出一个消息:

您的数据对于客户端数据表来说似乎太大了。可以考虑服务端处理:https://rstudio.github.io/DT/server.html

是否有另一种方法可以提供下载按钮而无需尝试实际显示表格(因此会遇到内存问题)?

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    如果您只想在 Rmd 文档中添加一个下载按钮,您可以使用 shiny::downloadHandlerruntime: shiny。例如,此 Rmd 将 mtcars 下载为 .csv 文件:

    ---
    title: "Download .csv"
    runtime: shiny
    output: html_document
    ---
    
    ```{r, echo=FALSE}
    
    ## data (possibly a reactive expression)
    myData <- mtcars
    
    ## create downloadButton in Rmd document
    downloadHandler(
      filename = function() { 
        paste("data-", Sys.Date(), ".csv", sep = "")
      }, 
      content = function(file) {
        write.csv(myData, file)
      },
      outputArgs = list(label = "Download .csv")
    )
    
    ```
    

    【讨论】:

    • 我将此下载按钮添加到了 Rmd 文件中,它可以正常工作。但是,当使用rmarkdown::render_site() 进行渲染,然后将 _site 中生成的文件移动到网络服务器上的目录时,该按钮会下载 html 文档而不是 csv。 html 文档只是呈现的 html 页面的副本。当我在 RStudio 中单击“运行”时,不会发生这种情况。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 2012-05-30
    • 1970-01-01
    • 2020-10-15
    • 2016-06-09
    • 2022-01-23
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多