在 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)
当 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)