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

编写函数统计网络中节点颜色变化次数(排除重叠)

统计网络节点颜色变化次数的R函数

根据需求,我们需要统计网络中节点间颜色完全无重叠的转换次数,以下是实现方案:

函数实现

count_color_changes <- function(network, colors) {
  change_count <- 0
  
  # 遍历每条节点转换边
  for (row in seq_len(nrow(network))) {
    from_node <- network$from[row]
    to_node <- network$to[row]
    
    # 取出对应节点的颜色并转为向量
    from_colors <- unlist(colors[[from_node]])
    to_colors <- unlist(colors[[to_node]])
    
    # 判断颜色集合是否完全无交集
    if (length(intersect(from_colors, to_colors)) == 0) {
      change_count <- change_count + 1
    }
  }
  
  return(change_count)
}

验证示例

使用你提供的示例数据测试函数:

library(tidyverse)

network <- tibble(
  from=c("a","b","c","c"),
  to= c("b","c","c1","c2"))

colors <- list(
  a=list("red"),
  b=list("red"),
  c=list("green"),
  c1=list("green","orange"),
  c2=list("blue","black")
)

# 调用函数
count_color_changes(network, colors)
# 输出结果:2

结果说明

逐个分析每条边的颜色转换:

  • a→b:颜色均为red,存在重叠,不计入
  • b→c:red与green无重叠,计入(+1)
  • c→c1:green与green+orange存在重叠,不计入
  • c→c2:green与blue+black无重叠,计入(+1)
    最终统计结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:15:24