我正在尝试在闪亮的应用程序中显示相对较大的DataTable。表格的尺寸为7000x30。 Chrome的性能非常缓慢,因此我添加了“ Scroller”扩展名以限制渲染,但这并没有帮助。造成问题的原因似乎是大量的列,而不是大量的行。我也尝试使用colvis
扩展名,但是该按钮提供了一个不可滚动的列表,并且包含30列,这是行不通的。我也尝试使用visible选项隐藏一些列,但是那没用。
这里是示例:
data = as_tibble(matrix(runif(200000), ncol=30))
data %>%
DT::datatable(filter = 'top', extensions = c('Buttons', 'Scroller'),
options = list(scrollY = 650,
scrollX = 500,
deferRender = TRUE,
scroller = TRUE,
# paging = TRUE,
# pageLength = 25,
buttons = list('excel',
list(extend = 'colvis', targets = 0, visible = FALSE)),
dom = 'lBfrtip',
fixedColumns = TRUE),
rownames = FALSE)
[很奇怪,Rstudio查看器显示了数据表并且很好。只有当我将文档作为闪亮的文档运行并在Chrome中打开它时,它才会变得非常缓慢。我的问题是:
colvis
是否有更好的按钮?如果列列表超过页面长度,我将无法访问这些隐藏的列以将其打开或关闭。你意思是呆滞是什么意思?
我运行了它,从速度上看,一切对我来说都不错。
library(shiny)
library(shinydashboard)
library(DT)
####/UI/####
header <- dashboardHeader()
sidebar <- dashboardSidebar()
body <- dashboardBody(
DT::dataTableOutput("test")
)
ui <- dashboardPage(header, sidebar, body)
####/SERVER/####
server <- function(input, output, session) {
data <- as_tibble(matrix(runif(200000), ncol=30))
output$test <- DT::renderDataTable({
DT::datatable(
data,
filter = 'top', extensions = c('Buttons', 'Scroller'),
options = list(scrollY = 650,
scrollX = 500,
deferRender = TRUE,
scroller = TRUE,
# paging = TRUE,
# pageLength = 25,
buttons = list('excel',
list(extend = 'colvis', targets = 0, visible = FALSE)),
dom = 'lBfrtip',
fixedColumns = TRUE),
rownames = FALSE)
})
}
shinyApp(ui, server)
[您可能想要从'scroller'
中删除Options = ()
,因为有那么多行,您可能希望将其分解为页面。另外,您可以尝试通过在其中放置Server = TRUE
来处理表服务器,这将使其一次处理每个页面,而一次处理整个数据集。