按钮:带滚动条的下载按钮仅下载几行

Buttons: download button with scroller downloads only few rows

我正在处理超过 100 000 行的表并使用 DT 包(开发版本 0.1.56)在 Shiny App 中将其可视化。

此外,我正在使用 DT 扩展名:Buttons,以下载不同格式的数据。然而,虽然 Scroller 扩展也被激活,但我只能下载几行(不是所有数据)。

示例代码:

library("shiny")
library("DT")

shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      iris,extensions=c("Buttons",'Scroller'),options = list(dom = 'Bfrtip',
                                               buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),scrollY = 50,
                                               scroller = TRUE
      ))
  }
)

此外,如果我 运行 只有 R 中的这部分代码并在查看器中获取数据表,我能够复制等所有行,这怎么可能?

library("DT")
datatable(
  iris,
  extensions = 'Buttons', options = list(
    dom = 'Bfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
  )
)

我尝试过不同的方法:

  1. 正在选项列表中更改 scrollY = ... -> 它正在工作,但 scrollY 的数量必须很大才能实际显示所有数据行,因此它可以完全下载 --> 不是很好的方法,因为我的数据来自数据库,我获得了不同数量的行加上它使应用程序非常慢

  2. 使用 pageLength 选项:pageLength = ..., lengthMenu=c(..,..,..,..)

然而选择的选项根本不显示...

有什么办法可以解决这个问题吗?

**我已经看到了同样的问题:

Download button downloads only 145 rows in DataTables with Scroller

但是DT包的意思还没有回答

提前致谢

问题是当 server=TRUE 时只有显示的数据被发送到客户端。设置 server=FALSE 在客户端呈现所有 DT 内容,因此所有数据都在那里。

确实是 server = TRUE 成功了。

这是代码,因为像我这样的人可能会把参数放在错误的地方。

library("shiny")
library("DT")

shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(server = FALSE,{
      DT::datatable(iris,
                    extensions=c("Buttons",'Scroller'),
                    options = list(dom = 'Bfrtip',
                                   buttons = c('copy', 'csv', 
                                               'excel', 'pdf', 
                                               'print'),
                                   scrollY = 50,
                                   scroller = TRUE)
      )
    })
  }
)