2017-10-18 1 views
0

Wie werden die Bindungen eines Knotens zu einem Teilgraphen des gleichen Graphen gezählt? Wie kann man in einem Schulkontext die Freunde von Schüler G in einer bestimmten Klasse zählen, unabhängig von ihrer Zugehörigkeit?r igraph - Identifizieren von Knotenverbindungen zu einem Teilgraphen, unabhängig von der Zugehörigkeit zu diesem Teilgraphen

Mein global graph

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) 

Mein Subgraphen

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 

Nun, wie ich die Anzahl der Freunde von Studenten "G" in Subgraphen "subschool" zählen kann? Die Ergebnisse sollten eine Zahl sein (G hat zwei Freunde in schoolsub) und eine Liste von Namen (G ist mit A und C von schoolsub befreundet).

Antwort

1

Sie können die Nachbarn bekommen zuerst, und nutzen sie schoolsub zur Teilmenge:

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

Wie zähle ich die Anzahl der Freunde des Schülers "G" im Untergraphen "subschool"?

Eine Möglichkeit könnte

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

oder

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