2015-04-21 9 views
5

I mit einem Diagramm arbeiten, die 121 Vertices und 209 Kanten aufweist und ich versuche aus dieser graphischen Darstellung Vertices zu entfernen, die zwei Bedingungen erfüllen:Conditional von Vertices Entfernen von Attributen in r basierend

  1. degree(my.graph)==0
  2. Der Name des Eckpunkts beginnt mit einem angegebenen Zeichen.

Hier ist ein Beispiel, was ich sehen möchte. Aus der folgenden Grafik:

toy.graph <- graph.formula(121-221,121-345,121-587,345-587,221-587, 490, 588) 

I Ecken mit Grad zu entfernende 0, die mit 5. In diesem Fall beginne ich nur Vertex 588 entfernen wollen (aber nicht 490 und 587). Ich weiß, wie Ecken mit 5 beginnen zu entfernen:

delete.vertices(toy.graph,V(toy.graph)$name 
       %in% grep("^5",V(toy.graph)$name,value=T)) 

und wie Ecken mit Grad entfernen 0:

delete.vertices(toy.graph, V(toy.graph)[degree(toy.graph)==0]) 

aber wenn ich versuche, zusammen diese beiden Bedingungen zu setzen, das heißt

delete.vertices(toy.graph, V(toy.graph)$name %in%  
       grep("^5",V(toy.graph)$name,value=T) 
       && V(toy.graph)[degree(toy.graph)==0]) 

es funktioniert nicht und ich bekomme die volle Grafik zurück. Gibt es eine spezielle Möglichkeit, mehrere Bedingungen zum Entfernen von Vertices zu kombinieren?

Vielen Dank!

+0

Verwenden '&', nicht '' &&. (Siehe "? Logic" Hilfeseite für den Unterschied) – MrFlick

+0

Ich habe es gerade herausgefunden. Ich habe einen falschen Operator für und verwendet. Vielen Dank! – Justyna

+0

Also, wenn Sie es mit nur '&' statt '&&' plotten Sie bekommen, was Sie wollen? Für mich bleiben 490 in der Grafik, und ich dachte, Sie wollten 490 loswerden, da es einen Grad von 0 hat. – Jota

Antwort

4

Ich glaube, das ist das, was Sie wollen:

delete.vertices(toy.graph, 
      V(toy.graph)[ degree(toy.graph) == 0 & 
          grepl("^5", V(toy.graph)$name) ]) 

pozdrawiam :)

Verwandte Themen