2017-10-18 1 views
0

어떻게 같은 그래프의 서브 그래프에 노드의 관계를 계산하는 것을 특징으로하는? 학교 환경에서 학생의 G가 속한 친구와 관계없이 특정 클래스의 친구들을 어떻게 계산합니까?r에 igraph이 - 서브 그래프에 노드의 관계를 식별 관계없이 소속의 서브 그래프

내 글로벌 그래프

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"의 친구의 수를 세는

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) 

내 서브 그래프? 결과는 숫자이어야합니다 (G는 schoolub에 두 명의 친구가 있습니다). 그리고 이름 목록 (G는 schoolub의 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 
관련 문제