根据Barabasi-Albert模型,我正在尝试生成无标度图。我使用了barabasi.game
函数,使图形的1000个顶点发芽:
library('igraph')
g <- barabasi.game(1000)
我现在想随机选择一个g
的顶点,并在其邻居中随机选择另一个顶点。如何访问图形的顶点?
编辑。我对G5W提出的解决方案有疑问。对于此图:
我从第一条指令中获得了
RV<-sample(V(g), 1)
结果RV=4
,但从第二开始
RVn<-sample(neighbors(g, RV, mode="all"), 1)
我获得了RVn=1
。从图片中可以看出,这是一个错误;此外,说明
neighbors(g, i)
返回
+ 1/10 vertex, named, from 57207c1:
[1] 2
为什么?
谢谢。
答案 0 :(得分:1)
已修改
您可以像这样选择一个随机顶点和一个随机邻居:
RV = sample(V(g), 1)
NRV = neighbors(g, RV, mode="all")
RVn = ifelse(length(NRV) == 1, NRV, sample(NRV, 1))
这应该在RV有一个或多个邻居时起作用。
我想提一下,大多数个顶点只有一个邻居,所以随机选择邻居不会做太多事情。
table(sapply(V(g), function(v) length(neighbors(g, v, mode="all"))))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 21 37 38 92
657 183 67 35 12 11 3 7 4 6 2 4 1 2 2 1 1 1 1