R闪亮设置DataTable列宽

Posted

技术标签:

【中文标题】R闪亮设置DataTable列宽【英文标题】:R Shiny set DataTable column width 【发布时间】:2014-10-02 01:06:39 【问题描述】:

我正在尝试设置以 Shiny 呈现的 DataTable 中的列宽,但无法使用 aoColumnDefs 选项来实现它。有没有人试过这个?我的表有 1 个文本,后跟 3 个数字列。数字列需要更窄,第一列(文本)需要更宽。

output$result <- renderDataTable(
z <- as(dataInput(), "data.frame")
setnames(z, c("Rules", "Support", "Confidence", "StatDep"))
z
, options = list(aLengthMenu = c(5, 30, 50), iDisplayLength = 5, bSortClasses = TRUE,
              aoColumnDefs = list(sWidth = "50px", aTargets = list(1))))

谢谢,

拉吉。

** 更新 ** 这似乎有效,但可能还有其他选项可以执行此操作。

output$result <- renderDataTable(
z <- as(dataInput(), "data.frame")
setnames(z, c("Rules", "Support", "Confidence", "StatDep"))
z
, options = list(aLengthMenu = c(5, 30, 50), iDisplayLength = 5, bSortClasses = TRUE,
              bAutoWidth = FALSE,
              aoColumn = list(list(sWidth = "150px", sWidth = "30px",
                                       sWidth = "30px", sWidth = "30px"))
                                  ))

【问题讨论】:

【参考方案1】:

试试这个

#OUTPUT - dtdata
output$table <- DT::renderDataTable(
  data.frame(a=c(1,2,3,4,5),b=c("A","B","C","D","E"))
,
options = list(
  autoWidth = TRUE,
  columnDefs = list(list(width = '200px', targets = "_all"))
))

将所有列的宽度设置为 200px。

要设置选定列的宽度,请将targets更改为数字或向量。

targets = c(1,3)

【讨论】:

要为多列设置不同的列宽,您可以使用:columnDefs = (list(list(width = '200px', targets =c(0, 2)), list(width = '80px' , 目标 =c(6)))) 这似乎不起作用。实际的解决方案是设置选项 scrollX = TRUE (github.com/rstudio/DT/issues/29#issuecomment-162093790) 然后使用 CSS (***.com/a/44110579/8605348) 指定列宽。【参考方案2】:

顺便说一句,如果你和我一样,在 1.10 版发布之前从未使用过 DataTables —— 上面的例子一开始让我很困惑,因为它们使用了 1.9 版中使用的表示法,但 1.10 引入了新的表示法: http://datatables.net/upgrade/1.10-convert

我一直在使用新语法,即

columnDefs 代替 aoColumnDefs http://datatables.net/reference/option/columnDefs

宽度而不是 sWidth http://datatables.net/reference/option/columns.width 等等

【讨论】:

对于我们这些不熟悉 javascript 的人,在他们的网站上翻译数据表文档,例如[datatables.net/reference/option/columns.width] 到等效的R 代码变得困难。特别是通过查看 JSON 语法并不清楚列表中所需的嵌套级别。有什么建议吗? 有助于了解新符号,但此答案并未给出或指出要使用的最新 DT 语法。

以上是关于R闪亮设置DataTable列宽的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)

设置 p:dataTable p:列宽

为 Datatable primefaces 设置列宽

没有拉伸的闪亮应用程序的 renderDataTable 中的列宽

R Shiny DataTable 选定的行颜色

转datatable 拖动列宽 鼠标拖动列宽