1

より大きなグラフをソースとして使用して、シード ノードのグループから最初のインタラクター サブグラフを生成したいと考えています。ソース グラフは 300,000 を超えるエッジを持つ巨大で、私のシード ノードは ~300 です。サブグラフ (または複数のサブグラフ) には、各シード ノードの最初のインタラクターが含まれている必要があります。

R で igraph を使用してサブグラフを作成するこの投稿のコードを適用し ましたが、大きなサブグラフしか得られません。大きなサブグラフ (大陸) と、この大きなグラフ (島) に接続されていない別のサブグラフを期待しています。

コード例:

g <-erdos.renyi.game(50, 3/50)
seeds <- c(1,4,5,6,40,30)
sg <- decompose.graph(g)
neighverts <- unique(unlist(sapply(sg,FUN=function(s){if(any(V(s) %in% seeds)) V(s) else NULL})))
g1 <- induced.subgraph(graph=g,vids=neighverts)

グラフg1は からの最大のコンポーネントを示していますdecompose.graph。このグラフには、私のシード ノードと、シード ノードの最初のインタラクターではない他のノードがあります。私が探しているのは、シード ノードとそれらの最初のインタラクターを含むサブグラフまたはサブグラフのリストです。多分私はneighborhoodグループ機能を試してみるべきですか?

よろしくお願いします

EDIT1:

ガボールの提案に従ってneigborhood、関数を で使用しましorder=1た。しかし、私はまだ期待した結果を得ることができません。詳細な例を以下に示します。

mat <- structure(list(X1 = c("5203820", "9985655", "5203820", "1795907","2190697", "5203820", "3233174", "1773848", "892104", "9976862","9987167", "9987134", "1211741", "1722252", "9986835", "9986879","9986835", "61145", "3442328", "5203820", "9987075", "3442328","1773848", "119371", "9986887", "2190697", "9987032", "9974927","9986835", "892104", "3744713", "9974927", "5118892", "9987134","9987134", "3442328", "2190697", "5203820", "9985655", "9987167","9990684", "3233174", "5203820", "9990684", "3744713", "9990684","9990684", "61145", "9990684", "3442328", "5378006", "9987035","9987035", "9987088", "3442328", "5118895"), X2 = c("61145","9987167","4928047", "9975931", "3744713", "3744713", "9975931","3820326", "9987100", "9987035", "9990670", "9990670", "9984628","3588994", "9986879", "9987059", "9987059", "9978463", "9986877","1795907", "9987142", "3588994", "1211741", "2111600", "9987124","1773848", "9987228", "9987100", "3442328", "3820326", "9983385","9978897", "9987019", "9987059", "5143742", "5143742", "9983385","9978463", "9987134", "9986887", "9990684", "9990684", "9990684","5373267", "9990684", "5389588", "5389374", "9990684", "5393513","9987088", "9987088", "9987035", "5118895", "9987088", "9987035","9987088")), .Names = c("X1", "X2"), row.names = c(NA, -56L), class = "data.frame")

g <- graph.data.frame(mat, directed=F)
seeds <- c('1722252', '9990670', '3442328', '5378006', '9990684', '9978463')
g1 <- induced.subgraph(g, vids = unlist(neighborhood(g, 1, nodes = seeds)))

plot(g1)

画像1.

結果は、ノード '5143742' と '9987134' の間のエッジを示しています。私の期待される結果は、シード ノード (シード) とそれらの間のエッジと最初のインタラクターの間のエッジのみであり、最初のインタラクター間のエッジは含まれません。

再度、感謝します

4

1 に答える 1