在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
相关产品推荐
相关产品推荐

