R Shiny设置DataTable列宽

xbs*_*bsd 39 r shiny dt

我试图在Shiny中呈现的DataTable中设置列的宽度,并且无法使用aoColumnDefs选项实现它.有人曾尝试过这个吗?我的表有1个文本,后跟3个数字列.数字列需要更窄,第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,
              aoColumnDefs = list(sWidth = "50px", aTargets = list(1))))
Run Code Online (Sandbox Code Playgroud)

谢谢,

  • 拉吉.

**更新**这似乎有效,但也可能有其他选择.

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"))
                                  ))
Run Code Online (Sandbox Code Playgroud)

rmf*_*rmf 28

试试这个

#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"))
))
Run Code Online (Sandbox Code Playgroud)

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

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

targets = c(1,3)
Run Code Online (Sandbox Code Playgroud)

  • 目标似乎遵循从0开始的索引,最好指定... (6认同)
  • 要为多列设置不同的列宽,您可以使用:columnDefs = (list(list(width = '200px', Targets =c(0, 2)), list(width = '80px', Targets =c(6)) )) (6认同)

小智 14

顺便说一句,如果你像我一样,并且在版本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 的人来说,将其网站上的数据表文档(例如 [http://datatables.net/reference/option/columns.width])翻译为等效的“R”代码变得很困难。特别是通过查看 JSON 语法并不清楚列表中所需的嵌套级别。有什么建议吗? (2认同)