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

在R语言中使用bfs()函数单独提取dist值的技术问询

提取BFS结果中的距离值

嘿,这事儿其实超简单!你用bfs()得到的bfst是一个列表结构,直接通过列表索引就能把dist部分单独拎出来。我给你一步步演示怎么操作:

第一步:确认BFS结果的结构

先看看bfst里都有啥,跑个str(bfst)就能看到,它包含了dist、pred这些元素,其中dist就是我们要的顶点距离数据——它是一个带顶点名称的向量,每个元素对应你图里的A-J顶点。

第二步:直接提取dist值

用下面的代码就能拿到纯距离数据(还保留着顶点名字哦):

# 提取带顶点名称的距离向量
dist_values <- bfst$dist

要是想直接看结果,就print(dist_values),输出会是这样的(具体值取决于你的随机矩阵):

A B C D E F G H I J 
0 1 1 Inf 2 ... ... ... ... ...

第三步:可选转成数据框(更直观)

如果觉得向量看着不够清晰,转成数据框格式会更方便后续查看或处理:

dist_df <- data.frame(
  Vertex = names(dist_values),
  Distance_from_root_B = dist_values  # 根节点是第2个顶点B,备注下更清楚
)
print(dist_df)

输出会是类似这样的表格:

Vertex Distance_from_root_B
1       A                    0
2       B                    1
3       C                    1
4       D                  Inf
...

完整代码示例(结合你的原始代码)

把整个流程串起来就是:

# 生成邻接矩阵
adjm <- matrix(sample(0:1, 100, replace=TRUE, prob=c(0.85,0.15)), nc=10)
for(i in 1:10) {
  for (j in 1:10) {
    if(i==j) { adjm[i,j]<-0 }
  }
}
colnames(adjm)<-c("A","B","C","D","E","F","G","H","I","J")

# 转换为邻接图
g1 <- graph_from_adjacency_matrix(adjm)

# 运行BFS,只保留距离信息
bfst<-bfs(g1, root=2, "all", dist=TRUE)

# 提取dist值
dist_values <- bfst$dist
print(dist_values)

# 可选转成数据框
dist_df <- data.frame(Vertex = names(dist_values), Distance = dist_values)
print(dist_df)

这样你就能轻松拿到所有顶点的BFS距离啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:10