tutorial navisworks español curso r igraph

navisworks - Cómo obtener identificadores de vértice de vuelta desde el gráfico



manual qgis 3.4 español pdf (2)

Por favor considere lo siguiente

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)

Ahora quiero acceder a un vértice específico del gráfico utilizando los identificadores que utilicé para crear el gráfico a partir del id <- c("1","2","A","B") marco de datos id <- c("1","2","A","B") .

Digamos que quiero acceder al tercer vértice, originalmente identificado con "A". ¿Hay alguna manera de acceder al vértice con algo como

V(g)$id == "A"

¿Y hay alguna forma de obtener la id del name ? Es decir, si corro

which(V(g)$name == "Peter")

Tengo 3 . ¿Cómo obtener una A lugar?


En primer lugar, igraph utiliza el name atributo de vértice como identificadores simbólicos de vértices. Le sugiero que agregue los ID como name y use otro nombre para los otros atributos, por ejemplo, nombre realname .

Pero a menudo no es necesario conocer las identificaciones numéricas si está utilizando nombres simbólicos, porque todas las funciones aceptan (bueno, deberían) las identificaciones simbólicas también. Por ejemplo, si desea el grado de vértice de Peter , solo puede decir degree(g, "Peter") .

Si realmente quieres el ID numérico, puedes hacer cosas como estas:

as.numeric(V(g)["Peter"]) # [1] 3 match("Peter", V(g)$name) # [1] 3

Si desea obtener la id del name en su ejemplo, simplemente puede indexar ese vector con el resultado:

id[ match("Peter", V(g)$name) ]


La respuesta podría ser útil. Mi recomendación es la misma que la de @Gabor Csardi sobre id como nombre y nombre como real_name.

library(igraph) name <- c("1","2","A","B") real_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(name,real_name,category) edges <- cbind(from,to) g <- graph.data.frame(edges, directed=TRUE, vertices=nodes) list.vertex.attributes(g) #Output: [1] "name" "real_name" "category" which(V(g)$real_name == "Peter") #Output: [1] 3 V(g)$name[which(V(g)$real_name == "Peter")] #Output: [1] "A"