Как найти ребра вершины, используя igraph и R? - PullRequest
24 голосов
/ 22 июля 2010

Скажем, у меня есть пример графика, я хочу найти ребра, связанные с вершиной 'a'

 d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
                 p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'))

library(igraph)
g <- graph.data.frame(d, directed=FALSE)
print(g, e=TRUE, v=TRUE)

Я легко могу найти вершину:

 V(g)[V(g)$name == 'a' ]

Но мне нужно сослаться на все ребра, связанные с вершиной «а».

Ответы [ 4 ]

27 голосов
/ 22 июля 2010

См. Документацию по итераторам igraph ;в частности функции from () и to ().

В вашем примере "a" - это V (g) [0], поэтому для нахождения всех ребер, связанных с "a":

E(g) [ from(0) ]

Результат:

[0] b -- a
[1] c -- a
[2] d -- a
4 голосов
/ 10 марта 2016

Если вы не знаете индекс вершины, вы можете найти его с помощью match () перед использованием функции from ().

idx <- match("a", V(g)$name)
E(g) [ from(idx) ]
3 голосов
/ 12 января 2017

Найдена более простая версия, сочетающая в себе две вышеупомянутые возможности, которые также могут быть полезны.

E(g)[from(V(g)["name"])]
1 голос
/ 07 апреля 2017

Я использую эту функцию для получения количества ребер для всех узлов:

sapply(V(g)$name, function(x) length(E(g)[from(V(g)[x])]))
...