我有一个标准图表,包含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))
然而它会返回警告: 要更换的项目数不是更换长度的倍数。虽然代码运行,但它没有考虑值的权重。我该如何修复此代码?
答案 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}}的节点数。