首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R Shiny DataTable中设置列宽在列数较多的情况下不起作用

在R Shiny DataTable中设置列宽在列数较多的情况下不起作用
EN

Stack Overflow用户
提问于 2016-01-18 16:41:59
回答 2查看 11.8K关注 0票数 13

我需要在R闪亮的应用程序中设置DataTabe的列宽。我浏览了文档中的Data Table Options。此外,我还回顾了Stackoverflow中的thisthis问题。

如果DataTable没有太多的列,则可以很好地设置宽度。但在某些情况下,如果存在多列,则尽管使用绝对宽度单位(例如'600px'),设置仍会被覆盖。

在下面的代码片段中:

代码语言:javascript
复制
output$mytable <- DT::renderDataTable({
  num_of_cols <- 3
  cbind(iris,iris)[,1:num_of_cols]},
  options = list(autoWidth = TRUE,
  columnDefs = list(list(width = '500px', targets = 1))))

如果我设置了变量num_of_cols = 3,它就能正常工作。但是,增加显示的列(num_of_cols)会导致列宽减小。在显示大量列的情况下,宽度设置似乎没有任何影响。

我尝试了选项autoWidth = FALSE,但它没有给出不同的结果。我还尝试在options drawCallback中使用JavaScript,如this线程的answer部分所述,但它给出了相同的结果。

如何让DataTable显示所需的列宽设置?

EN

回答 2

Stack Overflow用户

发布于 2017-12-04 10:49:09

哇。我真不敢相信。表对象上的列宽应该是如此清晰,而对于数据表,它却是如此令人困惑。我花了很多时间研究这个问题,最终在RStudio的工具提示中找到了答案。

代码语言:javascript
复制
DT::renderDataTable({
      datatable(df) %>% formatStyle(columns = c(1,2), width='200px')
})

编辑:

这可能行得通,但实际上并不比其他任何方式更有效。据我所知,没有直接的方法可以做到这一点。这是我现在使用的代码...我不认为我需要使用其他任何东西。我不得不一列接一列地构建它,并不断地返回并调整以使其正常工作。这看起来像是需要解决的问题。

我将UI宽度设置为1200px开始,并在完成所有操作后将其缩小。

代码语言:javascript
复制
#UI
DT::dataTableOutput(outputId = "tableID", width = '830px')
#Server
options = list(autoWidth = TRUE,
              columnDefs = list(list(targets=c(0), visible=TRUE, width='90'),
                                list(targets=c(1), visible=TRUE, width='145'),
                                list(targets=c(2), visible=TRUE, width='105'),
                                list(targets=c(3), visible=TRUE, width='100'),
                                list(targets=c(4), visible=TRUE, width='100'),
                                list(targets=c(5), visible=TRUE, width='100'),
                                list(targets=c(6), visible=TRUE, width='100'),
                                list(targets=c(7), visible=TRUE, width='90'),
                                list(targets='_all', visible=FALSE)
票数 15
EN

Stack Overflow用户

发布于 2016-10-21 05:09:34

按照建议的here,设置scrollX=T并将autoWidth = TRUE保留在选项中应该是可行的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34850382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档