2013-04-07 15 views
14

Sto cercando di suddividere un grafico igraph in base a caratteristiche del bordo (come la sua etichetta). Nell'esempio riproducibile Ho spudoratamente rubato da un altro post con una piccola modifica, mi piacerebbe essere in grado di separare le Migliori legami Friend (BF) dai legami familiari (FAM):Grafico igraph sottoinsieme con etichetta

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" 

il meglio che posso fare finora è visualizzare i bordi che hanno un tipo di legame:

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

risposta

18

come circa:

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) 

Suggerimento per igraph/rete analisi esercitazione spina/spudorato: http://sna.stanford.edu/rlabs.php

16

Suggerisco di leggere ?V e ?E per vedere come selezionare spigoli e vertici. Una soluzione abbastanza compatto e leggibile alla tua domanda è

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

Questo rimuove i vertici, così, se non hanno un bordo incidente dell'etichetta specificata. Vedi ?subgraph.edges per i dettagli.

+0

Grazie! Non sapevo dei comandi del sottografo. –

Problemi correlati