首页 > 解决方案 > 在 Rmd 文件中添加下载按钮但不显示表格

问题描述

我能够显示一个表并使用数据表 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

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

标签: rr-markdown

解决方案


如果您只想在 Rmd 文档中添加一个下载按钮,您可以使用shiny::downloadHandlerwith runtime: 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")
)

```

推荐阅读