在 R Shiny 中顺利渲染 DT 数据表

Render DT datatable smoothly in R Shiny

当 DT 数据table 最初在闪亮的应用程序中呈现时,它似乎从顶部增长并将所有其他元素推到页面下方。有没有办法更平滑地渲染数据table,这样其他元素就不会像这样被推开?

您可以在示例代码中看到 h1 首先在屏幕顶部呈现,然后在 datatable 呈现时向下推。我已经尝试为 table 创建一个具有最小高度的 div 但它没有用。

library(shiny)
library(DT)

ui <- fluidPage(

DT::dataTableOutput('table'),

h1('placeholder text'))

server <- function(input, output, session) {

    my_data <-
        data.frame(
            a = rnorm(5000),
            b = rnorm(5000),
            c = rnorm(5000),
            d = rnorm(5000)
        )

    output$table <- DT::renderDataTable({

        datatable(my_data, options = list(pageLength = 25))

    })

}

shinyApp(ui, server)

DT 包中有一些很好的功能,可以在初始渲染后数据发生变化时顺利地重新加载数据(使用 replaceData())。但是,我最初似乎无法顺利呈现数据。

因此,您可以定义一个以像素为单位的高度,但这可能与您在服务器上设置的 pageLength 参数不匹配。我认为如果你想在页面渲染中控制高度,最好的方法是以像素为单位定义高度,而不是页面长度。这样,在加载页面和呈现 table 时强制执行高度:

library(shiny)
library(DT)

ui <- fluidPage(

  DT::dataTableOutput('table', height = "500px"),

  h1('placeholder text'))

server <- function(input, output, session) {

  my_data <-
    data.frame(
      a = rnorm(5000),
      b = rnorm(5000),
      c = rnorm(5000),
      d = rnorm(5000)
    )

  output$table <- DT::renderDataTable({

    datatable(my_data)

  })

}

shinyApp(ui, server)