2016-05-31 8 views
2

igraphを1000の辺で作成しました。私の目標は、igraphで見つかったすべての三角形を抽出することですが、数字だけでなくラベルを含めることです。私もそれがラベル付きのIgraphですべての三角形を抽出する

私は呼び出すだけで試してみました3列を持つデータフレーム形式(三角形の各ノードに1つ)になりたい:

triangles(graph) 

をし、それがすべてのバック名前のリストを与えます

+ 28431/204 vertices, named: 
    [1] node_a             
    [2] node_b     
    [3] node_c 
    [4] node_a             
    [5] node_b     
    [6] node_d     
    [7] node_a             
    [8] node_b     
    [9] node_e        
    [10] node_a             
+ ... omitted several vertices 

私は試してみてください:1列に

adjacent.triangles(graph) 

それはすべての数値を返しますが、n個ノードの名前をotの:

[1] 15 103 45 121 152 78 325 325 3 35 90 0 488 283 3 0 325 325 325 325 78 21 190 3 
[25] 133 0 47 167 167 6 3 325 505 415 0 36 78 325 78 78 90 6 206 6 36 0 78 49 

私は、次の形式で私に三角形を与えることができますIGRAPHて機能を見つける必要がある:

COL1   COL2  COL3 
node_a  node_b  node_c 
node_a  node_b  node_d 
node_a  node_b  node_e 
node_f  node_g  node_h 

すべてのヘルプは素晴らしいことだ、ありがとう!

答えて

6

あなたは、

cl.tri=cliques(g,min=3,max=3) 

はサイズ3(三角形)のクリークを見つけて、それまでにデータフレームにそれらを組み立てるために、(仮定gはあなたのグラフである)クリーク機能を使用することができます

df<-lapply(cl.tri,function(x){V(g)$name[x]}) 

df2=data.frame(matrix(unlist(df),ncol=3,byrow=T)) 
+0

ありがとうございました。だから、私はちょうどラベルが何であるかを見るためにインデックスマッチをするだろうか? –

+1

はい、データフレームを作成する前に lapply(cl.tri、function(x){V(g)$ names [x]}) のようにするか、 apply(df、2、function x){V(g)$ names [x]}) の後に。ラベルを直接返すクリーク関数を取得する方法があるかもしれませんが、わかりません。 –

+0

これは素晴らしいスタートです。ありがとうございました。私はこれを試してみましたが、df = data.frame(行列(unlist(cl.tri)、ncol = 3、byrow = T)を実行したときにエラーが発生しました)最初の関数を試しました –

関連する問題