在R闪亮数据表中设置列宽在列较多的情况下不起作用 [英] Setting column width in R Shiny DataTable does not work in case of lots of column
本文介绍了在R闪亮数据表中设置列宽在列较多的情况下不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在R闪亮应用程序中设置DataTabe的列宽。我浏览了文档中的Data Table Options。另外,我在Stackoverflow中查看了this和this问题。
如果DataTable没有太多列,则可以很好地设置宽度。但是,在存在多列的情况下,尽管使用绝对宽度单位(例如'600px'
),设置仍会被覆盖。
在以下代码片段中:
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
,但没有给出不同的结果。我还尝试了在选项drawCallback
中使用JavaScript,如this线程的答案部分所述,但结果相同。
如何让DataTable显示所需的列宽设置?
推荐答案
哇。我真不敢相信这是真的。表对象上的列宽应该是如此清晰,而对于数据表来说却是如此令人困惑。我花了很多时间对此进行研究,最终在RStudio的工具提示显示中找到了答案。
DT::renderDataTable({
datatable(df) %>% formatStyle(columns = c(1,2), width='200px')
})
编辑:
这可能行得通,但实际上并不比其他任何方式更有效。据我所知,没有直截了当的方法可以做到这一点。这是我现在使用的代码..。我想我不需要用其他任何东西了。我不得不一列接一列地建造它,并不断地返回并进行调整,以使其正常工作。看起来像是需要修复的问题。
开始时我将UI宽度值设置为1200px,完成后将其缩小。
#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)
这篇关于在R闪亮数据表中设置列宽在列较多的情况下不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文