【问题标题】:How to replace vector values with certain proportional weights in igraph?如何在 igraph 中用某些比例权重替换向量值?
【发布时间】:2017-11-14 21:53:07
【问题描述】:

我有一个具有 3 个节点属性的标准图:“a”、“b”和“c”。我的代码导致“a”和“b”的值不断变化,“c”取决于这些值。为了适应不断变化的值,我在 for 循环中运行了以下代码。

V(g)$c[V(g)$a <= V(g)$b] <- sample(c(0, 1), vcount(g), replace = TRUE, prob = c(.9, .1))

但是它返回警告: 要替换的项目数不是替换长度的倍数。尽管代码运行,但它没有考虑值的权重。我将如何修复此代码?

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    问题在于您的sample 语句会生成 vcount(g) 值 - 图中的 每个 节点都有一个值。但是您正试图将这些值存储到V(g)$c[V(g)$a &lt;= V(g)$b]。据推测,有时并非每个节点都有V(g)$a &lt;= V(g)$b,因此存储数据的位置更少。解决这个问题的简单方法是只为属性 c 生成正确数量的值。一种方法是

    V(g)$c[V(g)$a <= V(g)$b] <- 
        sample(c(0, 1), sum(V(g)$a <= V(g)$b), replace = TRUE, prob = c(.9, .1))
    

    这只是你的原始陈述,除了我用sum(V(g)$a &lt;= V(g)$b) 替换了vcount(g),它计算了V(g)$a &lt;= V(g)$b 的节点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-17
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2014-10-14
      相关资源
      最近更新 更多