R Markdown HTML DT 数据表更新值

问题描述 投票:0回答:1

Rmd 脚本的最小示例:

library(DT)
df = data.frame(id = c(1, 2, 3, 4, 5), val = c(100, 150, 200, 100, 120))
datatable(df, filter="top")

“Knit to HTML”后,表格将正确显示在 HTML 页面上,并且可以进行过滤。现在可以显示 e。 G。过滤表时实时更新的一列的平均值?还是还有其他变量?

html r r-markdown markdown dt
1个回答
0
投票

是的,可以使用

footerCallback
选项在页脚中显示动态平均值。这是一个例子。相同的代码适用于任何具有数字列的数据框。

library(DT)

dat <- iris[1:4]

sketch <- htmltools::tags$table(
  tableHeader(names(dat)),
  tableFooter(rep("", ncol(dat)))
)

opts <- list(
  footerCallback = JS(
    "function(tfoot, data, start, end, display) {",
    "  var api = this.api();",
    "  var ncolumns = data[0].length;",
    "  for(var i = 0; i < ncolumns; i++) {",
    "    var columnData = api.column(i, {page: 'all', search: 'applied'}).data();",
    "    var total = columnData.reduce(function(a,b) {",
    "      if(isNaN(a)) return ''; return a+b;",
    "    })",
    "    var mean = total / columnData.length;",
    "    $(api.column(i).footer()).html(mean);",
    "  }",
    "}")
)

datatable(
  iris[,1:4], rownames = FALSE, container = sketch, 
  options = opts, filter = "top"
)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.