2

私はRとigraphが初めてで、誰かが次のことを手伝ってくれるかどうか疑問に思っていました.

グラフ内の 2 つの頂点間のエッジの重みを見つけたいです。私のグラフ構造は、通常のエゴ (ノード 1)、オルター (ノード 2)、およびそれらの間のエッジの重みによって定義されます。

E(igraph_friendship) [ from(5) ]$weightを使用して、ノード番号 5 に由来するエッジのリスト内の各エッジの重みを取得できることを知ってい ます。E(igraph_friendship) [ to(10) ]$weightを使用してノード番号 10 で終了するエッジのリスト

しかし、単純にノード 5 とノード 10 だけを接続するエッジの重みを見つけたいだけの場合はどうなるでしょうか。

または、すべてのエッジE(igraph_friendship)のリストでノード 5 と 10 を接続するエッジの識別子を取得できれば、それも機能します。

助けてくれてありがとう、私はそれをたくさん探していました。あなたの助けに本当に感謝しています!

4

2 に答える 2

0

ガボールの隣接行列の使用が役に立ちました。ただし、重み付きのエッジ リストを隣接行列に入れる方法を理解するのに時間がかかりました。graph.data.frame を使用して通常の方法で実行しようとしましたが、igraph オブジェクトを隣接行列に変換しようとすると、奇妙なエラーが発生しました (エラー: .M.kind(x) のエラー: 行列に対してまだ実装されていません) w / typeof文字)。この投稿は、 https ://sites.google.com/site/daishizuka/toolkits/sna/weighted-edgelists のトリックを行うのに役立ちました。

しかし、R ヘルプのメーリング リストのヘルプから最も効果的であることがわかったのは、igraph オブジェクトに直接作用する単純な演算子 E(g)[5 %--% 10]$weight です。詳細については、 http://igraph.sourceforge.net/doc/R/iterators.htmlを参照してください。

于 2012-10-19T18:46:17.137 に答える
0

igraph 0.6 以降では、グラフを隣接行列 (または、この場合は加重隣接行列) であるかのように扱うことができるため、これは実際には非常に簡単です。

library(igraph)
g <- graph.ring(10)
g[1,2]
# [1] 1
E(g)$weight <- runif(ecount(g))
g[1,2]
# [1] 0.8115639

マトリックス全体に対してこれを行いたい場合は、単純に行うことができます

g[]

または、疎行列が必要ない場合は、

g[sparse=FALSE]

詳しくはご覧ください?"[.igraph"

于 2012-10-19T01:26:22.380 に答える