2016-03-21 6 views
8

Ich möchte einen Teilgraphen eines Graphen eines gerichteten Netzwerks mit allen Ecken erstellen, die ein bestimmtes Vertex-Attribut haben (zB V (Grph) $ year ==) "1952") und ihre (unmittelbaren) unmittelbaren Nachbarn, die nur auf dem Out-Degree basieren.igraph - Nachbarn als Untergraph - make_ego_graph() als einzelnes Diagramm

Ich habe ego() versucht, make_ego_graph(), neighbors() und adjacent_vertices().

Zum Beispiel CitGraph <- make_ego_graph(Grph, 1, nodes = which(V(Grph)$year=="1952"), mode = "out") ergibt eine Liste von Graphen (und nicht einen einzigen umfassenden One) und nimmt überraschend zwei Stunden 50k Eckpunkte in diesem Jahr und 150k Nachbarn zeigte auf zu werden.

Ein Ansatz, den ich mir vorstellen könnte wäre, alle diese Graphen in der Liste zu aggregieren, weiß aber nicht wie. Außerdem möchte ich die Vertex-Attribute beibehalten, da mein ultimatives Ziel ist, assortativity_nominal() zu berechnen, basierend auf einem anderen Vertex-Attribut (geographischer Ort in diesem Fall).

Vielen Dank im Voraus für jeden Vorschlag, den Sie haben können!

Antwort

5

Tatsächlich make_ego_graph gibt ein Diagramm für die Umgebung für jeden der Vertices in der Liste nodes zurück.

Ich schlage vor, Sie lösen es mit der Liste der Kanten, die Sie in Ihrem Untergraphen enthalten müssen, anstelle der Liste der Scheitelpunkte. Vorausgesetzt, dass die Liste von Eckpunkten wie list_of_vertices <- V(Grph)$year == "1952" behoben ist oder was auch immer es Ihr Zustand ist, würden Sie so etwas wie tun,

list_of_edges <- E(your_graph)[from(list_of_vertices) | to(list_of_vertices)] 
your_subgraph <- subgraph.edges(your_graph, list_of_edges) 

(ich einen gerichteten Graphen verwenden.)

Hoffe, es hilft.

+0

Großartig, es funktioniert perfekt, danke! Für mein Beispiel musste ich die erste Zeile Ihres Codes an 'list_of_edges <- E (your_graph) [von (list_of_vertices)] anpassen, da ich mich nicht nur für Kanten zwischen 1952-Scheitelpunkten interessiere, sondern, im weiteren Sinne, alle von Sie. – user5835099

+0

Sie sind mehr als willkommen. Prost. – lrnzcig

Verwandte Themen