我正在处理超过 100,000 行的表格,并使用 DT
包(开发版本 0.1.56)在 Shiny 应用程序中可视化。此外,我还使用了 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')
)
)
我已经尝试了不同的方法:
更改选项列表中的
scrollY =
... --> 它能够工作,但是必须将scrollY
的数量设置得很大才能实际显示所有数据行,因此可以完全下载 --> 不是一个好方法,因为我的数据来自数据库,而且我获得的行数不同,并且它使应用程序非常慢使用 pageLength 选项:
pageLength = ..., lengthMenu=c(..,..,..,..)
然而,选择的选项根本没有显示...
有什么想法可以解决这个问题吗?
- 我知道
downloadHandler()
方法,但是 我更倾向于通过DT
解决,因为可用的扩展提供了一种漂亮而优雅的方式,可以同时下载不同格式的数据,如pdf、excel、csv和打印。
**我已经看过相同的问题:
Download button downloads only 145 rows in DataTables with Scroller
但它并没有在 DT
包的意义上得到回答
预先感谢
DT::renderDataTable
中加入server=FALSE
会发生什么? - Carl