我正在处理超过 100 000 行的表,并使用 DT
包(开发版本 0.1.56)在 Shiny 应用程序中将其可视化。
此外,我使用 DT
扩展作为:按钮
,以下载不同格式的数据。然而,虽然 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
包的含义
提前致谢
最佳答案
问题是,当server=TRUE
时,只有显示的数据被发送到客户端。设置 server=FALSE
会在客户端中呈现所有 DT 内容,以便所有数据都在那里。
关于r - 按钮 : download button with scroller downloads only few rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477345/