R:提取连接的图形

时间:2015-04-29 09:16:45

标签: r graph

我是一个由约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

由于

enter image description here

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)):

enter image description here