编写函数统计网络中节点颜色变化次数(排除重叠)
统计网络节点颜色变化次数的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
相关产品推荐
相关产品推荐

