Many user of igraph for R expect the functions ego() and make_ego_graph() , that take a list of vertices as input, to generate a new graph composed of the neighbors of these vertices. Unfortunately, these functions do no such thing. They generate a list of igraph.vs objects, which cannot be further treated as an igraph object. This must have some historic reason but is currently unpractical, considering that neigborhood-based subgraph generation is a feature so common that a software like Cytoscape even dedicates one of the few buttons of its GUI to its use.

There is a workaround, though. It lies in the combination of unlist() and the function induced_subgraph() , also part of the igraph package for R. Here is a short example of use:

library(igraph) # generate a random graph with named vertices g <- sample_gnp(1000,0.001,directed = TRUE) V(g)$name <- as_ids(V(g)) # make a list of the names of the nodes of interest nodes_of_interest <- c("1","200","123","590","10","12") # select the nodes having these names selnodes <- V(g)[name %in% nodes_of_interest] # get their network neighborhood selegoV <- ego(g, order=1, nodes = selnodes, mode = "all", mindist = 0) # turn the returned list of igraph.vs objects into a graph selegoG <- induced_subgraph(g,unlist(selegoV)) # plot the subgraph plot(selegoG,vertex.label=V(selegoG)$name)
Code language: PHP (php)