我需要在Shiny的DT::datatable中跨列合并单元格。最好的方法似乎是利用Javascript DataTables扩展程序RowGroup。但是我不知道从查看以上链接中的页面到在我的Shiny应用程序中合并单元格需要采取哪些步骤(有一个原因我正在使用Shiny;)。
在这个stackoverflow问题的已接受答案中有一个部分答案,但是1)那是关于合并行(即垂直合并而不是水平合并),2)R和Javascript交互的机制似乎被假定为先前的知识,让我有像“我需要从哪里下载哪些文件”和“我需要调整其中的Javascript代码吗?”这样的问题。
这是我的应用程序的简化示例:
在这个stackoverflow问题的已接受答案中有一个部分答案,但是1)那是关于合并行(即垂直合并而不是水平合并),2)R和Javascript交互的机制似乎被假定为先前的知识,让我有像“我需要从哪里下载哪些文件”和“我需要调整其中的Javascript代码吗?”这样的问题。
这是我的应用程序的简化示例:
library(shiny)
library(DT)
tbl <- data.frame("A"=c("foo", 1L, "question"),
"B"=c("bar", 2L, "answer"))
ui <- fluidPage(
dataTableOutput("table")
)
server <- function(input, output) {
output$table <- renderDT({
datatable(tbl, rownames=F, class="",
options = list(autoWidth=T,
columnDefs = list(list(className="dt-center", targets="_all"),
list(width="40px", target="_all"))))
})
}
shinyApp(ui = ui, server = server)
我想把这个表格
变成这样
警告: Error in : options$columnDefs必须为
NULL或子列表的列表,每个子列表必须包含一个
targets`元素。'。我的R版本是4.2.1(2022-06-23),htmltools v0.5.3,shiny v1.7.2和DT v0.23。因此,某些内容已更改,现在在2022年无法正常工作。 - emr2columnDefs
中的第二个子列表从target
更改为targets
。我会进行更新。 - Matt