【发布时间】:2016-11-23 11:01:07
【问题描述】:
我正在处理超过 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')
)
)
我尝试了不同的方法:
在选项列表中更改
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,实际上效果很好!谢谢!如果您将其发布为答案,我将立即接受它