从 igraph.es(边序列)到 R 中的节点

From igraph.es (edge sequence) to nodes in R

我想根据它们连接的节点的值(当然是在 R igraph 中)设置图中一定范围的边的边属性。

当我在我的图形对象中检索某条边时,我得到了一个边序列对象:

E(g)[1]
# + 1/2080 edge (vertex names):
# [1] 35->1
class(E(g)[1])
# [1] "igraph.es"

我怎样才能从那个边缘序列得到实际的边缘?我发现的唯一相关函数是 as_ids:

as_ids(E(g)[1])
# [1] "35|1"    

然后我必须拆分字符串以获得节点 ID,将 ID 转换为整数,使用 V(g)[x] 符号获取节点,检查我感兴趣的属性,最后设置边缘属性.

这是一个不切实际且浪费的过程。有没有更直接的方法来做同样的事情?

我知道 %--% 表示法,在某些情况下,它允许我提前根据节点属性过滤边,从而解决了我的问题。但在许多其他情况下,这种表示法没有帮助(当边属性值与节点属性有更复杂的关系时),我想知道是否有更通用的方法从一个边序列到相应的节点对。

您可以使用 ends 函数到达顶点:

ends(g, E(g)[1])