2017-01-15 32 views
1

如何访问igraph中图的top3连接组件的ID?igraph获取连接组件的ID

c <- igraph::components(g, mode = 'weak') 
which(c$membership == which.max(c$csize)) 

将给予最大的 和

which(c$membership == which.max(c$csize-1)) 

相同的结果c$csize-1只会减去-1从所有价值。

回答

2

您可以使用order排序,找出前3大簇的成员,并使用%in%检查顶点是他们中的一个内:

which(c$membership %in% order(c$csize, decreasing = TRUE)[1:3]) 

  • order(c$csize, decreasing = TRUE)给出了指数(对应于群集ID),它将按降序对size进行排序;
  • c$membership包含所有顶点的簇ID;
  • 使用%in%来检查群集ID是否在前三位;
1

您可以使用tail提取前3个(按大小)组件,然后遍历这些值以获取组件的成员。

top3 <- which(c$csize %in% tail(sort(c$csize),3)) 
sapply(top3, function(x) which(c$membership == x))