我正在处理超过10万行的表并使用DT
包(开发版本0.1.56)在Shiny App 中将其可视化.
此外,我使用DT
Extensions作为: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
因为可用的Extensions提供了漂亮和优雅的方式,允许一次下载不同格式的数据,如pdf,excel,csv和print.
**我已经看到了同样的问题:
下载按钮仅使用Scroller在DataTables中下载145行
但是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) ) }) } )