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

R语言igraph包代码报错:Unknown vertex selected 求助

嘿,我来帮你搞定这个igraph的问题!你遇到的simple_vs_index(x, ii, na_ok) :Unknown vertex selected错误,根源是变量笔误加上索引逻辑的小问题,咱们一步步修复:

问题出在哪?

  1. 变量名写错了:你先把所有顶点的局部传递性赋值给了qq,但紧接着写了qq <- max(q, na.rm = TRUE)——这里的q根本没定义啊!这会让qq变成NA,后面用tr==qq筛选顶点时,没有任何顶点能匹配这个条件,自然就找不到顶点了。
  2. 重复计算没必要:你两次调用transitivity计算局部传递性,既浪费资源又容易搞混变量。

修复后的完整代码

library(igraph)
# ggplot2在这里没用到,如果不需要可以删掉
library('ggplot2')

# 加载Zachary空手道俱乐部图
subgraphz <- graph.famous("Zachary")

# 计算每个顶点的局部传递性,存到顶点属性tr里
V(subgraphz)$tr <- transitivity(subgraphz, v = V(subgraphz), type = "local")

# 找出最大的传递性值(处理可能的NA,虽然Zachary图没孤立点,但好习惯)
max_trans <- max(V(subgraphz)$tr, na.rm = TRUE)

# 设置所有顶点默认大小为5
V(subgraphz)$size <- 5
# 把传递性等于最大值的顶点大小改成15
V(subgraphz)[tr == max_trans]$size <- 15

# 绘图
plot(subgraphz)

关键修复细节

  • 把笔误的max(q, ...)改成了max(V(subgraphz)$tr, ...),这样能正确拿到所有顶点传递性的最大值。
  • 合并了传递性的计算,只调用一次transitivity,既高效又避免变量混乱。
  • Zachary图里有好几个顶点的局部传递性是1.0(它们的邻居之间完全连通),修复后这些顶点都会显示成大圆点,完全符合你的需求。

运行这段代码,你就能看到预期的图,不会再报错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:23:45