如何在 r 中的可反应表的页脚(包含每列的总值)中添加分隔符?

Posted

技术标签:

【中文标题】如何在 r 中的可反应表的页脚(包含每列的总值)中添加分隔符?【英文标题】:How do I add separators in the footer (containing the total value of each column) of my reactable table in r? 【发布时间】:2022-01-09 05:44:17 【问题描述】:

我已经使用 RStudio 中的 reactable 包构建了一个表。第一列包含文本,所有其他列包含货币值。我添加了一个页脚,其中包含除第一列之外的每一列的总数。对于表格的主体,我在数字中添加了分隔符(因为它们是大数字)使用

colDef(format = colFormat(prefix = "£", 分隔符 = TRUE, 数字 = 2)

但这不适用于页脚,我不知道如何以相同格式获取页脚中的数字。页脚是使用

sprintf("£%.2f", sum(values))

所以有正确的前缀和小数位,但没有分隔符。有谁知道如何做到这一点?谢谢!

【问题讨论】:

【参考方案1】:

在 reactable 中,您可以使用 R 或 返回自定义内容的 javascript 函数。

使用formatC() 的R render function 可能的解决方案。 一个简单的可重现示例(仅供记录):

df <- data.frame(
  TextColumn = c("A", "B", "C", "D", "E"),
  NumColumn1 = c(1000111.01, 1000222.02, 1000333.03, 1000444.04, 1000555.05),
  NumColumn2 = c(2000111, 2000222, 2000333, 2000444, 2000555)
)

reactable::reactable(
  data = df,
  columns = list(
    NumColumn1 = reactable::colDef(
      format = reactable::colFormat(
        suffix = " €",
        separators = TRUE,
        digits = 2
      ),
      footer = function(values, name) 
        htmltools::div(paste0(formatC(
          x = sum(values),
          digits = 2,
          big.mark = " ",
          format = "f"
        ), " €"))
      
    ),
    NumColumn2 = reactable::colDef(
      format = reactable::colFormat(
        prefix = "£",
        separators = TRUE,
        digits = 2
      ),
      footer = function(values, name) 
        htmltools::div(paste0("£", formatC(
          x = sum(values),
          digits = 2,
          big.mark = " ",
          format = "f"
        )))
      
    ),
    TextColumn = reactable::colDef(footer = "Total")
  )
)

输出:

您可能感兴趣的解决方案:

df <- data.frame(
  TextColumn = c("A", "B", "C", "D", "E"),
  NumColumn1 = c(1000111.01, 1000222.02, 1000333.03, 1000444.04, 1000555.05),
  NumColumn2 = c(2000111, 2000222, 2000333, 2000444, 2000555)
)

reactable::reactable(
  data = df,
  columns = list(
    NumColumn1 = reactable::colDef(
      format = reactable::colFormat(
        prefix = "£",
        separators = TRUE,
        digits = 2
      )),
    NumColumn2 = reactable::colDef(
      format = reactable::colFormat(
        prefix = "£",
        separators = TRUE,
        digits = 2
      )),
    TextColumn = reactable::colDef(
      footer = "Total"
    )
  ),
  defaultColDef = reactable::colDef(
    footer = function(values, name) 
      if (name %in% c("NumColumn1", "NumColumn2")) 
        htmltools::div(paste0("£", formatC(
          x = sum(values),
          digits = 2,
          big.mark = " ",
          format = "f"
        )))
      
    ,
    footerStyle = list(fontWeight = "bold")
    )
)

输出:

【讨论】:

以上是关于如何在 r 中的可反应表的页脚(包含每列的总值)中添加分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

列表视图中的页脚按钮,如何从自定义列表适配器中获取值

想在反应原生应用程序的页脚中显示广告

如何对数据表中特定数据列的值求和

jQuery Mobile - 包含外部文件的页脚

如何删除剃须刀脚手架项目中的页脚?

如何删除 MediaWiki 中的页脚?