2

次のコードを使用してグラフを作成しています。

g <- graph(c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2))

このグラフを作成する方法を知りたいのですが、次の余分な手順を実行する必要はありません。

delete.vertices(g, 0)

グラフ関数はデフォルトでゼロのインデックス付き頂点に設定されているように見えるため、他の頂点と接続されていない頂点 0 がグラフに存在します。これは、V(g)、または単純に summary(g) を使用して確認できます。これは、0 から 5 までの ID を持つ 6 つの頂点を示します。

4

1 に答える 1

4

r-forgeサイトからアクセスしたドキュメントには、「頂点とエッジのigraphには数値の頂点IDがあります。頂点IDは常に連続しており、ゼロから始まります」と書かれています。したがって、グラフ関数に送信する前に、そのベクトルから1を引く必要があります。そうしないと、接続されていない「0」の頂点になってしまいます。接続されていない「0」頂点を回避するための一般的な方法は、ベクトルから最小値を減算することです。

> g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
> g
Vertices: 5 
Edges: 8 
Directed: TRUE 
Edges:

[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> g2 <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) )
> g2 <- delete.vertices(g2, 0)
> g2
Vertices: 5 
Edges: 8 
Directed: TRUE 
Edges:

[0] 0 -> 0
[1] 0 -> 3
[2] 1 -> 0
[3] 1 -> 1
[4] 2 -> 0
[5] 2 -> 3
[6] 4 -> 0
[7] 4 -> 1
> all.equal(g,g2)
[1] TRUE

ですから、あなたの質問は本当に「自分のルールを使って頂点にラベルを付けるにはどうすればいいのか」ということかもしれないと思います。これを試して:

g <- graph( c(1,1, 1,4, 2,1, 2,2, 3,1, 3,4, 5,1, 5,2) -1)
plot(g, vertex.label=1:5)

ドキュメントの冒頭のセクションにも次のように書かれています。

igraphのホームページはhttp://igraph.sourceforge.netにあります。特にドキュメントのセクションを参照してください。質問やコメントがある場合は、igraph-helpメーリングリストに参加してください。

于 2011-09-03T19:28:12.833 に答える