Search code examples
rigraphdegrees

R iGraph: degree in the case of bidirectional edges


I have noticed that the function degree in iGraph doesn't straighforwardly allow to calculate the degree of the undirected skeleton graph of a directed graph, whenever bidirectional edges are involved. For example,

g <-graph_from_literal( a-+b,a++c,d-+a,a-+e,a-+f )

d1 <- degree(g,v='a',mode="all")
# 6
nn <- unique(neighbors(g,'a',mode='all'))
d2 <- length(nn)
# 5

As I wanted d2, instead of d1, I have used a different route based on finding the neighbors of the considered vertex. My question is: is there a better/faster way to do this, maybe using some other iGraph function that I'm not aware of?


Solution

  • Create an undirected copy of the graph, collapse the multiple edges in the undirected graph into a single edge, and then calculate the degree on that:

    > g2 <- as.undirected(g, mode="collapse")
    > degree(g2)