首页 > 解决方案 > 具有动态列数量的 DT Shiny 中的 GrandTotal

问题描述

如何在 Shiny 应用程序中的 DT 中添加总行,如示例

在此处输入图像描述

我在这里探索了一些主题,但是如何在 Mean_price 列中添加总计,它是计算总营业额/总数量

如果 DT 中的列数动态更改,如何添加总计?

标签: rshinydt

解决方案


欢迎来到 SO!

这是使用的解决方案library(data.table)

library(data.table)
library(DT)

ui <- basicPage(
  h2("Grand total"),
  DT::dataTableOutput("mytable")
)

server <- function(input, output) {

  DT <- data.table (Product = paste("Item", seq(10)), Turnover = round(runif(10, 1000, 3000)), Qty=round(runif(10, 100, 120)), Mean_price=round(runif(10, 10, 30), digits = 2))
  totalDT <- as.data.table(c(Product = "Total", DT[, lapply(.SD, sum, na.rm=TRUE), .SDcols=c("Turnover", "Qty")]))
  totalDT[, "Mean_price" := round(Turnover/Qty, digits = 2)]

  myContainer = htmltools::withTags(table(
    tableHeader(DT),
    tableFooter(as.character(totalDT))
  ))

  output$mytable = DT::renderDataTable({
    DT::datatable(DT, options = list(pageLength = nrow(DT)), rownames = FALSE, container = myContainer)
  })
}

shinyApp(ui, server)

有关行特定样式的信息,请参阅

编辑,在进一步指定所需的输出(页脚)后:您不需要回调函数来创建页脚,请参阅


推荐阅读