2015-06-25 60 views
2

我有一個邊列表如下(簡單的例子):查找R閉合節點的所有集合

DT <- data.frame(x = c(letters[1:7],"a","b","c","a","d","e","f"), y = c(letters[1:7],"b","a","a","c","f","f","d")) 
> DT 
    x y 
1 a a 
2 b b 
3 c c 
4 d d 
5 e e 
6 f f 
7 g g 
8 a b 
9 b a 
10 c a 
11 a c 
12 d f 
13 e f 
14 f d 

我然後繪製此使用以下代碼:

require(igraph) 
myadj <- get.adjacency(graph.edgelist(as.matrix(DT), directed=FALSE)) 
my_graph <- graph.adjacency(myadj) 
layout <- layout.fruchterman.reingold(my_graph,niter=500,area=vcount(my_graph)^2.3,repulserad=vcount(my_graph)^2.8) 
plot(my_graph, vertex.size=10, 
    vertex.label.cex=1, 
    edge.arrow.size=0, edge.curved=TRUE,layout=layout) 

Network Graph

我現在想去提取所有封閉節點的集合。我不知道一個典型的符號是什麼樣子,但我能想象:

node set 
1 a 1 
2 b 1 
3 c 1 
4 d 2 
5 e 2 
6 f 2 
7 g 3 

我已經看了看周圍的功能/算法,但我不認爲我已經能夠清楚地說出我期待爲了正確。由於我對圖論非常陌生,因此我也不確定是否有正確的格式。這是最簡單的邊界列表,鄰接矩陣(稀疏還是滿)還是其他?

回答

5

嘗試

data.frame(node = V(my_graph)$name, set = membership(clusters(my_graph))) 
# node set 
# 1 a 1 
# 2 b 1 
# 3 c 1 
# 4 d 2 
# 5 e 2 
# 6 f 2 
# 7 g 3 
+0

感謝,正是我需要的。 – Chris