R Shiny设置DataTable列宽度

58

我试图设置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))))

谢谢,

  • Raj。

** 更新 ** 这似乎有效,但可能还有其他选项可以实现此目的。

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"))
                                  ))
2个回答

57

试一试

#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)

10
要为多个列设置不同的列宽,您可以使用以下代码: columnDefs = (list(list(width = '200px', targets =c(0, 2)), list(width = '80px', targets =c(6)))) - Nivel
1
这似乎不起作用。实际的解决方案是设置选项 scrollX = TRUE (https://github.com/rstudio/DT/issues/29#issuecomment-162093790),然后使用 CSS 指定列宽度 (https://dev59.com/gVoV5IYBdhLWcg3wgu9H#44110579)。 - ardaar
1
这个不起作用。 - jzadra
确实有效来源 - vladli

15

2
对于那些不熟悉JavaScript的人来说,将Datatable网站上的文档(例如[http://datatables.net/reference/option/columns.width])翻译成等效的`R`代码变得困难。特别是在列表中需要嵌套的层次不清楚,仅通过JSON语法无法理解。有没有关于这方面的提示? - Lazarus Thurston
了解新符号是有用的,但这个答案没有提供或指向一个最新的DT语法来使用。 - geotheory
1
@geotheory 这是链接 - vladli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接