覚えておくべきことの1つは、ほとんどのigraph関数は、IDによって頂点を参照することです。IDは、0からN-1までの単純な整数です。ここで、Nはグラフ内の頂点の数です。整数のNx2テーブル(ゼロベースの頂点インデックスを含む)があり、igraphで整数を頂点IDとして使用する場合はgraph
、行列を行ごとにベクトルにフラット化した後、コンストラクターを使用できます。を使用するgraph.data.frame
と、データフレームの最初の2列にシンボリック頂点名が含まれていると見なされます(つまり、整数である必要はありません)。これらはname
頂点属性に割り当てられ、igraphは0からN-1までのIDを単純に構成します。
したがって、各エッジに1行ずつNx2の行列があると仮定します。
> edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T)
まず、行列を行で平坦化した後、グラフを作成します。
> g <- graph(as.vector(t(edges)))
これにより、7つのエッジを持つ有向グラフが得られ、頂点103のアウト/インディグリーは期待どおりになります。
> ecount(g)
7
> degree(g, 103, mode="out")
4
> degree(g, 103, mode="in")
3
> degree(g, 103, mode="all")
7
上記の行列で使用graph.data.frame
する場合、igraphは、行列内の数値がname
頂点属性に格納されているグラフを作成します。
> g <- graph.data.frame(as.data.frame(edges))
> V(g)$name
[1] "103" "24" "92" "87" "86" "2" "101" "44"
これは、名前の付いた頂点が103
実際にグラフの頂点ゼロになったことを示しています。
> degree(g, 0, mode="out")
4
> degree(g, 0, mode="in")
3
> degree(g, 0, mode="all")
7
私の知る限り、グラフにdegree
頂点属性が呼び出されている場合は、頂点名を直接操作するname
こともできるので、次のこともできます。
> degree(g, "103", mode="in")
3
お役に立てれば。