2016-06-17 1 views
1

は、それらの間のキーに参加、私は、次のIGRAPH、R - を有する2つのdata.frames <code>df1</code>と<code>df2</code>から出発して(全体入射行列を計算することなく)二部グループからサブ入射マトリックス

等data.frameで終わります
# df3 
#  V ID1 X  ID2 
# 1  V1 1  X2 12 
# 2  V2 2  X1 11 
# 3  V2 2  X2 12 
# 4  V3 3  X2 12 
# 5  V2 2  X3 13 
# 6  V4 4  X3 13 
# 7  V5 5  X4 14 
# 8  V6 6  X4 14 
# 9  V7 7  X5 15 
# 10 V8 8  X5 15 
# 11 V9 9  X5 15 
# 12 V8 8  X6 16 
# 13 V10 10  X6 16 

ここで、列VXは、2部グラフの2つのグループを識別し、エッジをローリングします。 (私は次の2つの列ID1ID2を追加します)これから、中間ステップとして二部グラフ(BG)を取得し、すべてのクラスタ(最大独立頂点)の入射行列を取得する必要があります。

BGを得るために、私は

df4 <- subset(df3, select=c("ID1","ID2")) 
bg <- make_bipartite_graph(c(rep(0,nrow(df1)),rep(1,now(df2))), c(t(df4))) 

最初の質問を使用したい、他のどの賢くID-列を使用せずに私のdata.frameからの二部グラフを取得するための方法が、直接VXはありますか?

次に、クラスタの場合、clusters機能を使用しますが、発生率マトリックスのサブセットを取得する方法はわかりません(大きすぎる可能性があるため、全体を取得せずに)。あなたはなにか考えはありますか?

答えて

2

私は右のあなたを得た場合、私は知らないが、多分あなたはまさにこの

library(igraph) 
df <- df3[, c(1, 3)] 
g <- graph_from_data_frame(df) 
V(g)$type <- substr(V(g)$name, 1, 1)=="V" 
plot(as.undirected(g), layout=layout.bipartite(g)[, 2:1]) 

gs <- decompose(g) 
lapply(gs, as_incidence_matrix) 
# [[1]] 
# V1 V2 V3 V4 
# X2 1 1 1 0 
# X1 0 1 0 0 
# X3 0 1 0 1 
# 
# [[2]] 
# V5 V6 
# X4 1 1 
# 
# [[3]] 
# V7 V8 V9 V10 
# X5 1 1 1 0 
# X6 0 1 0 1 
+0

をしたいです!おかげさまで大変申し訳ありませんが、私は自分の投稿を読み直しました。 :) – Stefano

関連する問題