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

如何在R语言igraph新版本中实现sample_与sbm()函数?

重构igraph更新后的随机块模型代码

我之前也碰到过igraph版本更新后旧代码失效的情况,刚好能帮你解决这个问题!

原来的代码依赖旧版igraph的sample_函数来给SBM图附加顶点属性,但新版本里这个函数的接口已经调整,更推荐用直观的分步方式实现相同效果,重构后的代码如下:

# 1. 生成随机块模型图
sbm_2 <- sbm(
  n = 200,
  pref.matrix = diag(0.2, 2) + 0.2,
  block.sizes = c(100, 100)
)

# 2. 给顶点添加true_block属性
V(sbm_2)$true_block <- rep(1:2, each = 100)

如果你习惯用函数式的方式赋值,也可以用set_vertex_attr函数来完成属性添加:

sbm_2 <- set_vertex_attr(
  sbm(
    n = 200,
    pref.matrix = diag(0.2, 2) + 0.2,
    block.sizes = c(100, 100)
  ),
  name = "true_block",
  value = rep(1:2, each = 100)
)

为什么这么改?

旧版的sample_函数在igraph更新后已经被弃用或调整了参数逻辑,现在官方更推荐分离"生成图"和"添加属性"的操作,这样代码可读性更高,也更符合新版本igraph的API设计思路。

两种重构方式都能完全复现你原来代码的效果:生成一个200个顶点、分两个各100顶点块的随机块模型,同时给每个顶点标记对应的真实块标签true_block。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:38