2017-05-01 1 views
0

Je suis en train d'accéder aux sommets de chaque paire de sommet dans un bord à l'aide d'une boucle comme ceci:Comment accéder à des sommets via la liste de bord itération igraph R

for (e in E(G)) { do stuff } 

Cependant, je ne sais pas comment obtenir chaque sommet en e. J'essaie de retourner le type de chaque sommet, qui est dans la liste des vertex. Je peux obtenir l'attribut de sommet comme je le fais ci-dessous, bien que je ne suis pas sûr si cela est un moyen autorisé à parcourir la liste de bord et obtenir tous les bords:

i = 1 

for (e in get.edgelist(G)) { 
    if(V(G)[get.edgelist(G)[i,][1]]$type %in% vector && 
     V(G)[get.edgelist(G)[i,][2]]$type %in% vector) { do stuff } 
    i = i + 1 
} 

J'ai aussi remarqué que e in E(G) retourne un index, est-ce correct de le faire comme ça?

for (e in E(G)) { 
    if(V(G)[get.edgelist(G)[e,][1]]$type %in% vector && 
     V(G)[get.edgelist(G)[e,][2]]$type %in% vector) { do stuff } 
} 

je crois que le dernier exemple fait ce que je veux, mais je ne suis pas sûr de la mécanique de iGRAPH pour être sûr que je l'indexation des bords correctement. Tout avis serait grandement apprécié. Merci d'avance.

Répondre

0

Résumant les fréquences de pointe cela semble fonctionner:

for (e in E(G)) { 
if(V(G)[get.edgelist(G)[e,][1]]$type %in% vector && 
    V(G)[get.edgelist(G)[e,][2]]$type %in% vector) { do stuff } 
}