2016-07-03 9 views
0

私は多くの異なるコンポーネントを持つネットワークを持っています。私は、GephiとRのこれらのコンポーネントのそれぞれについて、最も高い中間度と最も近い中心点を持つノードを見つける必要がありますか?最高の中心性を持つノードを見つける

グローバルネットワークの中で最も高い中心を持つノードを抽出できますが、コンポーネントごとに必要です。これはどうすればいいですか?ここ

+0

あなたの質問を改善することができます。 Rパートについては、[Rで最小限の再現可能なサンプルを提供する方法](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610)をお読みください。 。それに応じて編集して改善してください。良い投稿は通常、最小限の入力データを提供し、望ましい出力データとコードの試行はすべてコピー貼り付け可能です。 – lukeA

+0

こんにちは、私はそれがデータを追加することをお勧めしますが、私はそれを行うことはできませんし、この場合は保護されたデータです。あなたの助言のために多くのveyrありがとう。 gephiにはコードはありません。 – DroppingOff

+0

有用な場合に備えて、エッジテーブルを持つファイルを持っています – DroppingOff

答えて

1

igraphを使用してネットワークの各連結成分に対して最高の近中心性で頂点を見つけるの例である:

library(igraph) 
set.seed(1) 

# random graph with two connected components 
adj <- matrix(rbinom(n=900, size=1, prob=0.5), nrow=30) 
adj[1:15,16:30] <- 0 
adj[16:30,1:15] <- 0 

g <- graph.adjacency(adj) 

# assign a "label" property to keep track of original vertex labels after 
# decomposing the network 
V(g)$label <- labels(V(g)) 

# iterate over connected components and find vertex with maximum closeness 
# centrality 
connected_components <- decompose(g) 

for (i in seq_along(connected_components)) { 
    subnet <- connected_components[[i]] 
    # Vertex with the largest centrality 
    max_centrality <- V(subnet)[which.max(closeness(subnet))]$label 
    print(sprintf("Vertex with max centrality for component %d: %s", i, max_centrality)) 
} 

IGRAPHはまた、例えば、中心性の他のタイプを計算する機能を有しますbetweeness centrality

+0

ちょっとキース、どうすれば元のラベルを保持できますか?私が分解する瞬間、あなたの答えは次のようになります:[1] "コンポーネントの最大中心を持つ頂点3256:1"そして代わりにノードの名前を1に変更すると、ノードの元のラベルが必要です。例 – DroppingOff

+1

こんにちは@DroppingOff、良い質問。元のノードラベルを追跡するようにコード例を更新しました。 igraphではノードやエッジに任意のメタデータを添付することができるため、元のラベルを上記のように保存するだけで済みます。 –

+0

ありがとうございました! – DroppingOff

関連する問題