You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将节点颜色数据框合并到子图列表并计算紫色节点占比?

解决方案

我们可以通过数据展开+合并统计的方式实现需求,全程用data.table处理效率更高,具体步骤如下:

1. 转换初始节点数据格式

先把你已有的节点颜色数据转为data.table格式,并标记紫色节点:

library(data.table)
original_node_dt <- as.data.table(original_node_data)
original_node_dt[, is_purple := ifelse(Color == "purple", 1, 0)]

2. 遍历子图列表并统计

对subgraph_sets中的每一组子图结果,展开顶点列表、合并颜色数据后按分区统计:

# 遍历25次迭代结果
result_list <- lapply(seq_along(subgraph_sets), function(iter) {
  current_dt <- subgraph_sets[[iter]]
  # 展开分区的节点列表,得到节点-分区对应关系
  expanded_dt <- current_dt[,.(node = unlist(vertices)), by = group]
  # 合并节点颜色标记
  merged_dt <- expanded_dt[original_node_dt, on =.(node = Node)]
  # 按分区统计核心指标
  stats_dt <- merged_dt[,.(
    total_nodes =.N,
    purple_nodes = sum(is_purple)
  ), by = group]
  # 添加迭代编号、调整列名和顺序
  stats_dt[, `:=`(
    subgraph = iter,
    partition = group,
    percent_purple = round(purple_nodes / total_nodes * 100, 4),
    group = NULL
  )]
  setcolorder(stats_dt, c("subgraph", "partition", "total_nodes", "purple_nodes", "percent_purple"))
  return(stats_dt)
})

# 合并所有迭代结果
final_result <- rbindlist(result_list)

3. 最终结果示例

运行后final_result将呈现你需要的格式:

subgraph partition total_nodes purple_nodes percent_purple
        <int>     <int>       <int>        <int>          <num>
  1:        1         1          14            8       57.1429
  2:        1         2          12            2       16.6667
  3:        1         3           4            0        0.0000
  4:        1         4           9            6       66.6667
  5:        1         5          11            4       36.3636
 ---                                                           
121:       25         1          13            3       23.0000
122:       25         2           6            6      100.0000
123:       25         3           9            0        0.0000
124:       25         4           8            5       62.5000
125:       25         5          14            6       42.8571

关键说明

  • unlist(vertices)是核心操作,把每个分区的节点列表展开成逐行的对应关系,为后续合并统计铺路
  • 利用data.table的高效合并和分组计算能力,处理25次迭代的速度很快
  • 百分比保留4位小数,可通过调整round函数的第二个参数修改精度

内容的提问来源于stack exchange,提问作者farrow90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:57:37