2013-04-07 11 views
14

Ich versuche, ein Graphigrafie durch eine Kantenmerkmale (wie seine Bezeichnung) zu unterteilen. Im reproduzierbaren Beispiel I aus einem anderen Beitrag schamlos mit einer kleinen Modifikation gestohlen habe, würde Ich mag den Best Friend Binder (BF) von der Familienbande (FAM) in der Lage sein zu trennen:Subset-Grafik nach Etikett

edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T) 
g <- graph(as.vector(t(edges))) 
E(g)[c(2:4,7)]$label<-"FAM" 
E(g)[c(1,5,6)]$label<-"BF" 

Das Beste, was ich kann bisher tun ist, um die Kanten angezeigt werden, die eine Art der Bindung haben:

E(g)[E(g)$label=="BF"] 
V(g)[E(g)$label=="BF"] 

Antwort

18

, wie etwa:

gfam <- subgraph.edges(graph=g, eids=which(E(g)$label=="FAM"), delete.vertices = TRUE) 
gbf <- subgraph.edges(graph=g, eids=which(E(g)$label=="BF"), delete.vertices = TRUE) 

Anregung zum IGRAPH/Netzwerkanalyse tutorial/shameless Stecker: http://sna.stanford.edu/rlabs.php

16

Ich empfehle Ihnen, lesen Sie ?V und ?E, um zu sehen, wie Kanten und Scheitelpunkte ausgewählt werden. Eine recht kompakt und gut lesbar Lösung auf Ihre Frage ist

subgraph.edges(g, E(g)[label=="FAM"]) 
subgraph.edges(g, E(g)[label=="BF"]) 

Dies entfernt die Eckpunkte als auch, wenn sie nicht über einen Vorfall Rand des angegebenen Label. Details finden Sie unter ?subgraph.edges.

+0

Danke! Ich wusste nichts über die Subgraph-Befehle. –