r - 具有动态列数量的 DT Shiny 中的 GrandTotal
问题描述
如何在 Shiny 应用程序中的 DT 中添加总行,如示例
我在这里探索了一些主题,但是如何在 Mean_price 列中添加总计,它是计算总营业额/总数量
如果 DT 中的列数动态更改,如何添加总计?
解决方案
欢迎来到 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)
有关行特定样式的信息,请参阅此。
编辑,在进一步指定所需的输出(页脚)后:您不需要回调函数来创建页脚,请参阅此。
推荐阅读
- r - 通过引用与 data.table 合并总和
- reactjs - VictoryPie 自定义颜色
- kotlin - 这个在 Kotlin 中使用 generateSequence 的素数生成函数不容易理解。:(
- node.js - 将 Electron + Puppeteer 打包到 .exe
- angular - 如何以角度验证 ip 地址的输入?
- amazon-web-services - AWS Lambda SQS 触发器担任角色
- python - 如果脚本中有函数,python 不会写入文件
- powerbi - DAX:计算季度数据的平均值(使用 COUNT 度量计算)
- typescript - 如何有条件地获取数组中所有对象的键的联合?
- python - Python Matplotlib xkcd:字体 Humor Sans 丢失