通过RMarkdown-Shiny从DT按钮下载的不完整的CSV / Excel行

时间:2017-04-17 08:04:48

标签: r datatables shiny r-markdown

我有以下 RMarkdown Shiny 文档:

---
title: "Title"
runtime: shiny
output: 
  flexdashboard::flex_dashboard:
    vertical_layout: scroll
    theme:  bootstrap
    orientation: rows
---

```{r setup, include=FALSE}
library(flexdashboard)
```



Rows {data-height=400}
-----------------------------------------------------------------------

### Table

``` {r show_table}
library(DT)
library(ggplot2)
renderDataTable( {
  dat  <- diamonds
   },
   extensions = c('Scroller','Buttons'),
    class = 'compact cell-border stripe',  rownames = FALSE,
    filter = list( position = 'top', clear = FALSE, plain =TRUE ),
    options = list(
        deferRender = FALSE,
        scrollY = 200,
        scroller = TRUE,
        dom = 'Bfrtip',
        buttons = c('csv', 'excel')
      )
  )
```

生成此文档:

enter image description here

下载Excel文件后,行数仅为~90行 没有完成53,940个条目。为什么这样,我该如何解决?

1 个答案:

答案 0 :(得分:2)

默认情况下,DT使用Server-side Processing,因此只有可见数据会发送到浏览器。这就是为什么Excel文件只包含可见数据的原因(如果你删除scrollY = 200scroller = TRUE,这就变得非常清楚了。)

通过包含server = FALSE,例如

,下载禁用服务器端处理所需的所有数据
class = 'compact cell-border stripe',  rownames = FALSE,
server = FALSE,
filter = list( position = 'top', clear = FALSE, plain =TRUE ),

不幸的是,这使得加载和浏览表格的速度非常慢(至少在我的电脑上)。

BTW:您的代码取决于diamonds的{​​{1}}数据集。