2017-10-13 3 views
1

Ich kenne den Grad meines globalen Graphen, aber jetzt muss ich die Grade von Knoten innerhalb eines Untergraphen finden. Also, John hat 4 Freunde in seiner Schule, aber drei Freunde in seiner Klasse. Wie befehle ich, diese drei Freunde in seiner Klasse zu zählen, aber nicht den Rest in seiner Schule?Berechne den Grad eines Untergraphen mit Hilfe von r igraph

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) 
g <- graph.adjacency(mat, mode="undirected", add.rownames = T) 

Meine Zugehörigkeit Matrix für die Klassen P, Q und R

x <- read.table(text=" 
        P Q R 
       A 1 1 0 
       B 0 0 1 
       C 0 0 0 
       D 1 0 1 
       E 1 1 0 
       F 0 1 0 
       G 1 1 1", header=TRUE) 

inc <- as.matrix(x) 
ginc <- graph.incidence(inc) 

Meine Subgraphen für die Klasse P

class_nodes <- names(which(inc[,"P"] == 1)) 
class_adj <- mat[class_nodes, class_nodes] 
class_graph <- graph.adjacency(class_adj, mode = "undirected") 

Ich muss den Grad der Knoten im Untergraphen "class_graph" berechnen, aber nur ihre Verbindungen innerhalb des Untergraphen zählen, nicht die globale Grafik.

+0

So mit diesen Beispieldaten berechnen, Was ist der gewünschte Output, damit wir mögliche Lösungen testen können? – MrFlick

+0

Die gewünschte Ausgabe ist der Grad der Knoten im Untergraphen "class_graph", aber nur ihre Verbindungen innerhalb des Untergraphen, nicht die globale Grafik. Ich habe die Frage aktualisiert, um dies klarzustellen. – NBK

+0

Die tatsächlichen numerischen Werte, die Sie aufgrund Ihrer Definition erwarten, wären noch deutlicher. – MrFlick

Antwort

3

Sie können alle Knoten in Klasse P mit finden (wir extrahieren die Namen speziell, damit wir sie in einem anderen Diagrammobjekt nachschlagen können).

V(ginc)[.nei("P")]$name 

Dann können Sie einfach diese Untergruppe von Verbindungen aus dem Hauptgrafik extrahieren mit

subg <- induced.subgraph(g, V(ginc)[.nei("P")]$name) 

und Sie können den Grad dieser Knoten mit

degree(subg) 
# A D E G 
# 2 2 2 2 
+0

Die Funktion .nei gibt mir einen Fehler. Weißt du, warum das sein könnte? – NBK

+0

Welche Version von igigraph verwenden Sie? Dies wurde mit 'igraph_1.1.2' getestet. Ich denke, es wurde in früheren Versionen etwas anderes genannt. – MrFlick

+0

Ich habe IGRAPH 1.0.1 Die Fehlermeldung lautet: Fehler bei eval (ausdr, envir, enclos): Funktion nicht gefunden „.nei“ – NBK

Verwandte Themen