首页 > 解决方案 > 如何调整数据表的大小以将其放入闪亮仪表板的框()中

问题描述

我不知道如何确保我的 DT::renderDataTable 的大小适合我的盒子......

这是我的闪亮渲染的图片

有人知道如何确保桌子适合盒子吗?或者我可以在表格下添加一个滑块来滚动屏幕上没有的其他变量吗?

这是我的代码:

服务器.R

output$table = DT::renderDataTable({
    DT::datatable(
      round(df,2), 
      rownames = TRUE,
      extensions = 'Buttons',
      options = list(
        autoWidth = FALSE, 
        columnDefs = list(list(width = "125px", targets = "_all")),
        dom = 'tpB',
        lengthMenu = list(c(5, 15, -1), c('5', '15', 'All')),
        pageLength = 15,
        buttons = list(
          list(
            extend = "collection",
            text = 'Show More',
            action = DT::JS("function ( e, dt, node, config ) {
                              dt.page.len(50);
                              dt.ajax.reload();}")
          ),list(
            extend = "collection",
            text = 'Show Less',
            action = DT::JS("function ( e, dt, node, config ) {
                              dt.page.len(10);
                              dt.ajax.reload();}")

          )
        )
      )
    )

  })

身体.R

        box( title = "A little taste of the dataset",
             width = 12,
             DT::dataTableOutput("table") )

提前致谢。

标签: rshinyshinydashboard

解决方案


您可以简单地添加scrollX = TRUE到数据表选项:

library(shiny)
library(shinydashboard)

DF <- data.frame(replicate(50, runif(1000, 0, 10)))

ui <- fluidPage(box(
  title = "A little taste of the dataset",
  width = 12,
  DT::dataTableOutput("myTable")
))

server <- function(input, output, session) {
  output$myTable = DT::renderDataTable({
    DT::datatable(
      round(DF, 2),
      rownames = TRUE,
      extensions = 'Buttons',
      options = list(
        autoWidth = FALSE, scrollX = TRUE,
        columnDefs = list(list(
          width = "125px", targets = "_all"
        )),
        dom = 'tpB',
        lengthMenu = list(c(5, 15,-1), c('5', '15', 'All')),
        pageLength = 15,
        buttons = list(
          list(
            extend = "collection",
            text = 'Show More',
            action = DT::JS(
              "function ( e, dt, node, config ) {
                              dt.page.len(50);
                              dt.ajax.reload();}"
            )
          ),
          list(
            extend = "collection",
            text = 'Show Less',
            action = DT::JS(
              "function ( e, dt, node, config ) {
                              dt.page.len(10);
                              dt.ajax.reload();}"
            )

          )
        )
      )
    )
  })
}

shinyApp(ui = ui, server = server)

推荐阅读