7
a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")

我想在a和b之间添加一条边,我该怎么做?

4

2 回答 2

15

好的,我们这里似乎有两个问题。一个是在问题标题中:“如果我们有 Vertex 对象,我如何找到顶点 ID”?Siddharth正确回答了这个问题:您可以简单地使用index顶点的属性。另一个问题在问题正文中:“我想在 a 和 b 之间添加一条边,我该怎么做?”。答案很简单,就是使用add_edge接受顶点对象和顶点 ID 的方法:

g.add_edge(a, b)

在这里,我假设aandb是类型的对象Vertex。但是,从您的代码片段来看,您本质上想要做的是在您知道名称的两个顶点之间添加一条边。这也可以使用对象的find方法来完成VertexSeq,它的工作方式类似于您所做的选择,但只返回第一个匹配的顶点。因此,您可以简单地执行以下操作:

g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B"))

更好的是,如果您使用namevertex 属性来存储顶点名称(而不是Name- 请注意大写字母),您甚至可以使用名称本身而无需调用g.vs.find,因为 igraph 特别对待namevertex 属性:

g.add_edge("A", "B")
于 2013-06-10T08:56:28.900 回答
9

您可以通过访问 vertexSeq 的特定顶点来找到顶点 ID,因为“a”是一个顶点序列对象。

像这样的东西,应该做的伎俩。

a[0].index
于 2013-06-10T08:39:38.423 回答