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

ret*_*phy 3 r graph edges igraph

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

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

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

如何从该边缘序列获得实际的边缘?我发现的唯一相关功能是as_ids

as_ids(E(g)[1])
# [1] "35|1"    
Run Code Online (Sandbox Code Playgroud)

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

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

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

ret*_*phy 6

您可以使用该ends函数来获取顶点:

ends(g, E(g)[1])
Run Code Online (Sandbox Code Playgroud)