我想在R中使用igraph计算网络的集群,其中所有节点都连接在一起。情节似乎行得通,但是我无法从我的群集中返回正确的分组。如何用igraph识别完全连接的节点群?
在这个例子中,该图显示了4个主要的簇,但最大的集群中,不是所有的节点都连接:
我希望能够从返回集群下面的列表此对象:
[[1]]
[1] 8 9
[[2]]
[1] 7 10
[[3]]
[1] 4 6 11
[[4]]
[1] 2 3 5
[[5]]
[1] 1 3 5 12
示例代码:
library(igraph)
topology <- structure(list(N1 = c(1, 3, 5, 12, 2, 3, 5, 1, 2, 3, 5, 12, 4,
6, 11, 1, 2, 3, 5, 12, 4, 6, 11, 7, 10, 8, 9, 8, 9, 7, 10, 4,
6, 11, 1, 3, 5, 12), N2 = c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3,
3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10,
11, 11, 11, 12, 12, 12, 12)), .Names = c("N1", "N2"), row.names = c(NA,
-38L), class = "data.frame")
g2 <- graph.data.frame(topology, directed=FALSE)
g3 <- simplify(g2)
plot(g3)
的cliques
功能让我的一部分的方式有:
tmp <- cliques(g3)
tmp
但是,这份名单也让不是所有节点连接的分组。例如,该集团包括节点1,2,3,5但1只连接到3,和2只连接到3和5,以及5只连接到2:预先
topology[tmp[[31]],]
# N1 N2
#6 3 2
#7 5 2
#8 1 3
感谢您的任何帮帮我。
在群集中没有节点12但其中的所有其他连接保持不变的情况下,您希望返回什么内容? (我现在无法处理这个问题,但认为澄清可能有助于任何人做出这个决定。) –
@ JoshO'Brien - 谢谢你的帮助:我相信我会想要一个1, 3,5和2,3,5中的一个。 –
因此,在5个节点的简单循环中,您同样希望返回全部五个连接对。 –