a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")
我想在a和b之间添加一条边,我该怎么做?
好的,我们这里似乎有两个问题。一个是在问题标题中:“如果我们有 Vertex 对象,我如何找到顶点 ID”?Siddharth正确回答了这个问题:您可以简单地使用index
顶点的属性。另一个问题在问题正文中:“我想在 a 和 b 之间添加一条边,我该怎么做?”。答案很简单,就是使用add_edge
接受顶点对象和顶点 ID 的方法:
g.add_edge(a, b)
在这里,我假设a
andb
是类型的对象Vertex
。但是,从您的代码片段来看,您本质上想要做的是在您知道名称的两个顶点之间添加一条边。这也可以使用对象的find
方法来完成VertexSeq
,它的工作方式类似于您所做的选择,但只返回第一个匹配的顶点。因此,您可以简单地执行以下操作:
g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B"))
更好的是,如果您使用name
vertex 属性来存储顶点名称(而不是Name
- 请注意大写字母),您甚至可以使用名称本身而无需调用g.vs.find
,因为 igraph 特别对待name
vertex 属性:
g.add_edge("A", "B")
您可以通过访问 vertexSeq 的特定顶点来找到顶点 ID,因为“a”是一个顶点序列对象。
像这样的东西,应该做的伎俩。
a[0].index