2017-10-18 106 views
0

如何計算節點與同一圖的子圖的關係?在學校的情況下,如何計算學生G在特定班級的朋友,而不管她在哪裏?r 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在學校有兩個朋友)和一個名字列表(G是學校的A和C的朋友)。

回答

1

你可以先拿到鄰居,並用它們來子集schoolsub

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

如何計算子圖 「subschool」中學生「G」的朋友人數?

的一種方法是

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

slam::row_sums(schoolgraph[c("F", "G"),V(schoolsub)$name]) 
# F G 
# 2 2