32

假设我有这个示例图,我想找到连接到顶点“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”的所有边。

4

4 回答 4

33

请参阅有关igraph 迭代器的文档;特别是 from() 和 to() 函数。

在您的示例中,“a”是 V(g)[0],因此要找到连接到“a”的所有边:

E(g) [ from(0) ]

结果:

[0] b -- a
[1] c -- a
[2] d -- a
于 2010-07-22T04:51:53.540 回答
7

如果不知道顶点的索引,可以在使用 from() 函数之前使用 match() 找到它。

idx <- match("a", V(g)$name)
E(g) [ from(idx) ]
于 2016-03-10T11:02:09.170 回答
6

找到了一个结合上述两种努力的更简单的版本,它也可能有用。

E(g)[from(V(g)["name"])]
于 2017-01-12T20:09:45.423 回答
2

我使用这个函数来获取所有节点的边数:

sapply(V(g)$name, function(x) length(E(g)[from(V(g)[x])]))
于 2017-04-07T12:42:33.423 回答