Comment récupérer les identifiants de sommets à partir du graphique
Veuillez considérer ce qui suit
library(igraph)
id <- c("1","2","A","B")
name <- c("02 653245","03 4542342","Peter","Mary")
category <- c("digit","digit","char","char")
from <- c("1","1","2","A","A","B")
to <- c("2","A","A","B","1","2")
nodes <- cbind(id,name,category)
edges <- cbind(from,to)
g <- graph.data.frame(edges, directed=TRUE, vertices=nodes)
Maintenant, je veux accéder à un niveau particulier les sommets du graphe à l'aide de l'id j'ai utilisé pour créer le graphique à partir de la trame de données id <- c("1","2","A","B")
.
Disons que je veux accéder à la troisième vertex - initialement identifié avec "Un". Est-il possible d'accéder au sommet avec quelque chose comme
V(g)$id == "A"
Et est-il de toute façon à obtenir la id
de name
? C'est, si je lance
which(V(g)$name == "Peter")
- Je obtenir 3
. Comment obtenir A
à la place?
source d'informationauteur CptNemo
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, igraph utilise le sommet de l'attribut
name
symbolique id de sommets. Je vous suggère d'ajouter les codes d'identification de laname
et utiliser un autre nom pour les autres attributs, par exemplerealname
.Mais souvent vous n'avez pas besoin de connaître les id numériques si vous utilisez des noms symboliques, car toutes les fonctions accepte (enfin, ils doivent) symbolique de l'ids. E. g. si vous souhaitez que le degré d'un sommet
Peter
vous pouvez juste diredegree(g, "Peter")
.Si vous voulez vraiment l'identifiant numérique, vous pouvez faire des choses comme celles-ci:
Si vous souhaitez vous rendre à
id
dename
dans votre exemple, vous pouvez simplement l'indice de ce vecteur avec le résultat de:La réponse pourrait être utile. Ma recommandation est la même que celle de @Gabor Csardi sur l'id que le nom, et le nom que real_name.