从 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])
我想根据它们连接的节点的值(当然是在 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])