微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 R 中使用 scrollX 时设置列宽

如何解决在 R 中使用 scrollX 时设置列宽

我正在尝试更改 DT::datatable 中某些列的宽度,不幸的是,仅当数据中的列数较少时,才使用 columnDefs 选项才有效。

当我将所有列添加到我的数据中时,列宽不再遵循我在 columnDefs 选项中的设置。

这是一个例子,你可以看到第一个表格的宽度都是恒定的,而在第二个表格中,我已经能够根据需要手动设置宽度。删除 scrollX 参数也不起作用,考虑到我的数据的列数,我需要它。


library(MASS)
library(shiny)
library(DT)

ui <- fluidPage(
    mainPanel(
      DT::dataTableOutput("table1"),br(),DT::dataTableOutput("table2")
    )
  )

server <- function(input,output) {

  output$table1 <- DT::renderDataTable({
    DT::datatable(
      Cars93[,-(20:27)],rownames = FALSE,options = list(
        pageLength = 5,autowidth = TRUE,scrollX = TRUE,searching = TRUE,ordering = TRUE,paging = TRUE,columnDefs = list(list(width = "200px",targets = c(0:2)),list(width = "20px",targets = 3),list(width = "50px",targets = 4))
      )
    )
  })
    output$table2 <- DT::renderDataTable({
      DT::datatable(
        Cars93[,-(6:27)],options = list(
          pageLength = 5,targets = 4))
        )
      )
  })
  
}

shinyApp(ui,server)

我需要在我的代码中更改什么才能在第一个表中设置列宽,就像在第二个表中一样,同时拥有所有列和 scrollX?

谢谢

解决方法

试试:

ui <- fluidPage(
  tags$head(
    tags$style(
      HTML("table {table-layout: fixed;}")
    )
  ),......

并将 autowidth 替换为 autoWidth

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。