如何用 igraph 中的某些比例权重替换矢量值?
How to replace vector values with certain proportional weights in 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))
但是 returns 警告:
要替换的项目数不是替换长度的倍数。尽管代码运行了,但它没有考虑值的权重。我将如何修复此代码?
问题是您的 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
的节点数。
我有一个具有 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))
但是 returns 警告: 要替换的项目数不是替换长度的倍数。尽管代码运行了,但它没有考虑值的权重。我将如何修复此代码?
问题是您的 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
的节点数。