Ответ 1
См. документацию по итераторам igraph; в частности функции from() и to().
В вашем примере "a" есть V (g) [0], поэтому, чтобы найти все ребра, связанные с "a":
E(g) [ from(0) ]
Результат:
[0] b -- a
[1] c -- a
[2] d -- a
Скажем, у меня есть этот примерный граф, я хочу найти ребра, связанные с вершиной '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' ]
Но мне нужно ссылаться на все ребра, связанные с вершиной 'a'.
См. документацию по итераторам igraph; в частности функции from() и to().
В вашем примере "a" есть V (g) [0], поэтому, чтобы найти все ребра, связанные с "a":
E(g) [ from(0) ]
Результат:
[0] b -- a
[1] c -- a
[2] d -- a
Если вы не знаете индекс вершины, вы можете найти его с помощью match() перед использованием функции from().
idx <- match("a", V(g)$name)
E(g) [ from(idx) ]
Нашел более простой вариант, совмещающий эти два вышеперечисленных усилия, которые могут быть полезны.
E(g)[from(V(g)["name"])]
Я использую эту функцию для получения числа ребер для всех узлов:
sapply(V(g)$name, function(x) length(E(g)[from(V(g)[x])]))