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

时间:2019-08-19 21:12:27

标签: r shiny dt

当DT数据表在闪亮的应用程序中初始呈现时,它似乎从顶部开始增长,并将所有其他元素向下推入页面。有没有一种方法可以使数据表更平滑地呈现,以免其他元素像这样被推开?

您可以在示例代码中看到h1首先在屏幕顶部呈现,然后在数据表呈现时向下推。我尝试过为表格创建一个具有最小高度的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())平稳地重新加载数据。但是,我似乎无法一开始就平滑地呈现数据。

1 个答案:

答案 0 :(得分:0)

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

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)