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闪亮)