我对R中的IGraph很新。
我正在使用IGraph进行社区检测,并且已经使用walktrap技术构建了我的社区/群集。
接下来,在每个聚类中,我想计算每两个特定顶点之间的顶点数。我想这样做的原因是,对于每个顶点XX,我想列出连接到XX的顶点,通过说最多3个顶点,意味着距离XX不超过3个顶点。
任何人都可以帮助在R中如何做到这一点吗?
答案 0 :(得分:0)
制作随机图(用于演示):
g <- erdos.renyi.game(100, 1/25)
plot(g,vertex.size=3)
获取walktrap社区并保存为顶点属性:
V(g)$community<-walktrap.community(g, modularity = TRUE, membership = TRUE)$membership
V(g)$community
现在制作一个只包含一个社区的边和顶点的子图,例如社区2:
sub<-induced.subgraph(g,v=V(g)$community==2)
plot(sub)
制作一个包含所有最短路径的矩阵:
shortestPs<-shortest.paths(sub)
现在计算小于或等于3的最短路径的数量。
我还排除了从每个节点到自身的最短路径(shortestPaths!= 0)。
也除以2,因为对于无向图,每个节点对在矩阵中出现两次。
Number_of_shortest_paths_smaller_3 <- length(which(shortestPs<=3 & shortestPs!=0))/2
Number_of_shortest_paths_smaller_3
希望接近你所需要的,祝你好运!