R大数据表的显示光泽

问题描述 投票:0回答:1

我正在尝试在闪亮的应用程序中显示相对较大的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中打开它时,它才会变得非常缓慢。我的问题是:

  1. 为什么会这样
  2. 默认情况下,我如何仅显示有限数量的列,并可以选择显示其他列
  3. colvis是否有更好的按钮?如果列列表超过页面长度,我将无法访问这些隐藏的列以将其打开或关闭。
r shiny datatables dt datatables-1.10
1个回答
0
投票

你意思是呆滞是什么意思?

我运行了它,从速度上看,一切对我来说都不错。

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来处理表服务器,这将使其一次处理每个页面,而一次处理整个数据集。

© www.soinside.com 2019 - 2024. All rights reserved.