1

I'm fairly new to IGraph in R.

I'm doing community detection using IGraph and have already built my communities /clusters using the walktrap technique.

Next, within each cluster, I want to count the number of vertices between each two certain vertices. The reason I want to do this is, for each vertex XX, I want to list vertices that are connected to XX via say max 3 vertices, meaning no further than 3 vertices away from XX.

Can anyone help how this can be done in R please?

Russia Must Remove Putin
  • 374,368
  • 89
  • 403
  • 331
  • 1
    Please provide a [reproducible example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) with sample input and desired output. – MrFlick May 10 '15 at 15:04

1 Answers1

1

making a random graph (for demonstration):

g <- erdos.renyi.game(100, 1/25)
plot(g,vertex.size=3)

get walktrap communities and save as vertex attribute:

V(g)$community<-walktrap.community(g, modularity = TRUE, membership = TRUE)$membership
V(g)$community

now make a subgraph containing only edges and vertices of one community, e.g. community 2:

sub<-induced.subgraph(g,v=V(g)$community==2)
plot(sub)

make a matrix containing all shortest paths:

shortestPs<-shortest.paths(sub)

now count the number of shortest paths smaller or equal to 3.

I also exclude shortest paths from each node to itself (shortestPaths!=0).

also divide by two because every node pair appears twice in the matrix for undirected graphs.

Number_of_shortest_paths_smaller_3 <- length(which(shortestPs<=3 & shortestPs!=0))/2
Number_of_shortest_paths_smaller_3

Hope that's close to what you need, good luck!

Ma Ba
  • 148
  • 9