You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的igraph对象中提取直径边序列及指定顶点间边序列

解决igraph中提取直径边序列的问题

嘿,我来帮你搞定这两个igraph相关的问题~

通用方法:提取igraph对象中直径的边序列

要提取构成图直径的边序列,核心思路是先获取直径对应的顶点路径,再基于这个顶点路径提取对应的边。具体步骤如下:

  1. 获取直径的顶点路径:用get_diameter()函数得到构成直径的顶点顺序,比如:
library(igraph)
library(igraphdata)
data(karate)

# 获取直径对应的顶点序列
diam_vertex_seq <- get_diameter(karate)
  1. 提取对应边序列:利用igraph的E()函数,通过path参数传入刚才的顶点序列,就能直接得到这条路径上的所有边:
# 提取直径的边序列
diam_edge_seq <- E(karate, path = diam_vertex_seq)

# 查看边的详细信息(转成数据框更直观)
as.data.frame(diam_edge_seq)

针对你的具体案例:提取Actor 16与Actor 17之间的边序列

你已经通过farthest_vertices()找到了最远的两个顶点,接下来可以这样提取它们之间的边序列:

方法一:直接用已知的顶点路径

你已经通过get_diameter()得到了顶点序列[Actor 16, John A, Actor 20, Mr Hi, Actor 6, Actor 17],直接把这个序列传给E()函数的path参数即可:

# 用你得到的顶点序列
target_verts <- V(karate)[c("Actor 16", "John A", "Actor 20", "Mr Hi", "Actor 6", "Actor 17")]
edge_seq <- E(karate, path = target_verts)

# 打印边序列
print(edge_seq)

方法二:从最远顶点自动获取路径(更通用)

如果不想手动输入顶点序列,可以结合farthest_vertices()和get.shortest.paths()来自动获取路径,再提取边:

# 获取最远顶点对
farthest_pair <- farthest_vertices(karate)
# 获取两个顶点之间的最短路径(也就是直径路径)
path_verts <- get.shortest.paths(karate, 
                                 from = farthest_pair$vertices[1], 
                                 to = farthest_pair$vertices[2])$vpath[[1]]
# 提取对应的边序列
edge_seq <- E(karate, path = path_verts)

执行完上面的代码后,edge_seq就是连接Actor 16和Actor 17的边序列啦,你可以用as.data.frame(edge_seq)查看每条边的起点、终点和ID信息。

内容的提问来源于stack exchange,提问作者iatowks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:18:37