50

我正在尝试设置以 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"))
                                  ))
4

2 回答 2

48

尝试这个

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

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

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

targets = c(1,3)
于 2015-08-04T16:08:52.833 回答
14

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

我一直在使用新的语法,即

columnDefs 而不是 aoColumnDefs http://datatables.net/reference/option/columnDefs

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

于 2015-02-21T23:39:13.020 回答