如何用igraph中的某些比例权重替换矢量值?

时间:2017-11-10 17:33:38

标签: r igraph

我有一个标准图表,包含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))

然而它会返回警告:  要更换的项目数不是更换长度的倍数。虽然代码运行,但它没有考虑值的权重。我该如何修复此代码?

1 个答案:

答案 0 :(得分:1)

问题是您的sample语句会生成vcount(g)值 - 一个用于图中每个节点的值。但是您试图将这些值存储到V(g)$c[V(g)$a <= V(g)$b]中。据推测,有时并非每个节点都有V(g)$a <= 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))

这只是您原来的陈述,除了我已将vcount(g)替换为sum(V(g)$a <= V(g)$b),其中V(g)$a <= V(g)$b计算了{{1}}的节点数。