a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")
我想在a和b之间添加一条边,我该怎么办?
答案 0 :(得分:11)
好的,好像我们在这里有两个问题。一个是问题标题:“如果我们有Vertex对象,如何找到顶点ID”?这是正确的answered by Siddharth:您可以简单地使用顶点的index
属性。另一个问题是在问题正文中:“我想在a和b之间添加一个边缘,我该怎么做?”。答案只是使用接受Vertex对象的add_edge
方法以及顶点ID:
g.add_edge(a, b)
我假设a
和b
是Vertex
类型的对象。但是,从您的代码片段判断,您基本上要做的是在两个顶点之间添加一个您知道名称的边。这也可以使用find
对象的VertexSeq
方法来完成,它与您所做的选择类似,但只返回第一个匹配的顶点。所以,您可以这样做:
g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B"))
更好的是,如果使用name
顶点属性来存储顶点名称(而不是Name
- 请注意大写字母),您甚至可以在不调用{{1}的情况下使用名称本身因为igraph特别处理g.vs.find
顶点属性:
name
答案 1 :(得分:8)
您可以通过访问vertexSeq的特定顶点来找到顶点id,因为'a'是顶点序列对象。
这样的事情应该可以解决问题。
a[0].index