在R中,如何在节点之间随机生成边?

时间:2017-11-19 16:00:11

标签: r igraph

所以目前我使用以下代码随机生成30个节点和151个连接。

g <- erdos.renyi.game(30, 151 , type = "gnm" , directed = F , loops = F)

但是,我想生成一个空图,然后随机生成151条边。我该怎么做呢?是否有我可以添加到下面的代码?

g <- g <- graph.empty(30, directed = F)

1 个答案:

答案 0 :(得分:1)

您可以执行以下演示at the bottom of this page

g <- graph.empty(30, directed = F)
number_of_edges = 151

g <- g + edges(sample(V(g), number_of_edges*2, replace = T), color = "red")

但是,您似乎想要排除循环。您可以通过将2个节点抽样151次而无需替换来完成此操作,例如:

my_edges <- sapply(seq(number_of_edges),function(x) {sample(V(g),2,replace=F)})
g <- g + edges(my_edges, color = "red")

希望这有帮助!

  

编辑:没有重复的边缘。

要创建没有重复边缘的图形,您可以先创建所有组合,然后从这些组合中进行采样:

x <- combn(V(g),2)
my_edges <- x[,sample(seq(dim(x)[2]),number_of_edges,replace=F)]
g <- g + edges(my_edges, color = "red")