2017-01-15 3 views
1

igraphのグラフの上位3つの接続コンポーネントのIDにアクセスするにはどうすればよいですか?igraph接続されたコンポーネントのIDを取得

c <- igraph::components(g, mode = 'weak') 
which(c$membership == which.max(c$csize)) 

を与える最大 と

which(c$membership == which.max(c$csize-1)) 

c$csize-1と同じ結果が単に引くであろう-1すべての値から。

あなたは頂点がそれらの1の範囲内にあるかどうかを確認するためにソートし、トップ3の最大のクラスタのメンバーシップを見つけると %in%を使用するように orderを使用することができます

答えて

2

which(c$membership %in% order(c$csize, decreasing = TRUE)[1:3]) 

  • order(c$csize, decreasing = TRUE)がインデックスを与えますsizeを降順でソートする(クラスタIDに対応する)
  • c$membershipには、すべての頂点のクラスタIDが含まれています。
  • %in%を使用して、クラスタIDが上位3つ以内にあるかどうかを確認します。
1

tailで上位3個のコンポーネントを抽出し、それらの値をループしてコンポーネントのメンバーを取得することができます。

top3 <- which(c$csize %in% tail(sort(c$csize),3)) 
sapply(top3, function(x) which(c$membership == x)) 
関連する問題