我是一个由约300个节点组成的无向图。该图由多个连通图组成(下面的例子是由5个连通图组成的无向图)。使用R,我如何提取每个连接的子图,以及它们的节点和边数。我的图表由两列data.frame表示:
node1 node2
node1 node3
node2 node5
...
通过以下示例,预期结果将是
Subgraph NodeCount EdgeCount
1 2 1
2 4 3
3 2 1
4 2 1
5 2 1
由于
答案 0 :(得分:2)
你可以这样做:
library(igraph)
set.seed(1)
g <- simplify(graph.compose(graph.ring(10), graph.star(5, mode = "undirected"))) + edge("7", "8")
dg <- decompose.graph(g)
t(sapply(seq_along(dg), function(x) c(Subgraph = x, NodeCount = vcount(dg[[x]]), EdgeCount = ecount(dg[[x]]))))
# Subgraph NodeCount EdgeCount
# [1,] 1 7 12
# [2,] 2 2 1
# [3,] 3 1 0
示例图表如下所示(plot(g)
):