2017-10-18 2 views
0

ノードの結び付きを同じグラフのサブグラフに数える方法は?学校の文脈では、そこに所属するかどうかにかかわらず、特定のクラスの学生Gの友達を数える方法は?今igraph - サブグラフとの関係にかかわらず、サブグラフに対するノードの結び付きを識別する

私のグローバルグラフ

library(igraph) 
school <- read.table(text=" 
         A B C D E F G 
        A 0 1 0 1 0 1 1 
        B 1 0 1 1 0 1 0 
        C 0 0 0 0 0 0 1 
        D 1 1 0 0 1 0 0 
        E 0 0 0 1 0 1 1 
        F 0 1 0 0 1 0 1 
        G 1 0 1 0 1 1 0", header=TRUE) 

mat <- as.matrix(school) 
schoolgraph <- graph.adjacency(mat, mode="undirected", add.rownames = T) 

マイ部分グラフ

schoolsub <- induced.subgraph(schoolgraph,1:3) 

IGRAPH 7dfb160 UN-- 3 2 -- 
+ attr: name (v/c), TRUE (v/c) 
+ edges from 7dfb160 (vertex names): 
[1] A--B B--C 

、どのように私はサブグラフ "subschool" に "G"、学生の友人の数を数えるのですか?結果は数字(Gはschoolubに2人の友人がいる)と名前のリスト(GはschoolubのAとCの友達です)でなければなりません。

答えて

1

次のようになります。

nbs <- neighbors(schoolgraph, "G")$name 
V(schoolsub)$name[V(schoolsub)$name %in% nbs] 
#[1] "A" "C" 
2

サブグラフ 「サブスクール」で学生「G」の友人数をどのように数えますか?

一つの方法は、あなたが最初の隣人を取得し、schoolsubをサブセットするためにそれらを使用することができます

sum(schoolgraph["G",V(schoolsub)$name]) 
# [1] 2 

または

slam::row_sums(schoolgraph[c("F", "G"),V(schoolsub)$name]) 
# F G 
# 2 2 
関連する問題