r igraph - 识别节点与子图的关系,无论与子图的隶属关系如何

时间:2017-10-18 07:25:52

标签: r igraph subgraph

如何计算节点与同一图表子图的关系?在学校的背景下,如何统计学生G在特定班级的朋友,不管她是谁?

我的全局图

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

现在,我如何计算学生朋友的数量&#34; G&#34;在子图&#34;子学校&#34;?结果应该是一个数字(G在学校中有两个朋友)和一个名单(G是学校A和C的朋友)。

2 个答案:

答案 0 :(得分:2)

  

如何计算子图中学生“G”的朋友数量   “subschool”?

一种方法可能是

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

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

答案 1 :(得分:1)

您可以先获取邻居,然后将其用于子集schoolsub

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