reactable设置groupBy分组时如何排除指定列不参与分组逻辑?
实现方案
你可以通过自定义rank列的单元格渲染逻辑实现需求,核心是利用reactable行对象的depth属性判断当前行是分组聚合行还是展开后的明细行,仅在分组行展示rank值,明细行返回空值即可。
完整实现代码如下:
library(reactable) # 示例数据构造 df <- data.frame( rank = c(1,1,1,2,3), uni = c(rep("Stanford University",3), "Yale University", "University of Pennsylvania"), data = c(1,5,3,2,8) ) reactable( df, groupBy = "uni", columns = list( rank = colDef( align = "center", # 聚合时取唯一的排名值,保证分组行能正常显示排名 aggregate = "unique", # 自定义渲染逻辑 cell = function(value, rowInfo) { # depth为0代表是最上层的分组聚合行,正常显示rank值 if (rowInfo$depth == 0) { return(value) } else { # 明细行返回空 return("") } } ), uni = colDef(name = "Psychology School"), data = colDef(aggregate = "mean") ) )
关键逻辑说明
aggregate = "unique":保证分组聚合行能拿到对应大学唯一的排名值,不会出现多值冲突rowInfo$depth:reactable内置的行属性,最顶层分组行的depth为0,展开后的第一层明细行depth为1,以此类推,通过该属性可以精准区分行类型,只在分组行展示rank值,明细行自动置空- rank列不会随分组展开/收起隐藏,始终固定在左侧第一列,完全符合需求
- 如果你的实际数值列名不是
data,替换成对应列名即可
内容的提问来源于stack exchange,提问作者adajam
相关产品推荐
相关产品推荐

