有没有办法在生成随机igraph网络时允许平行边缘?

时间:2020-08-06 23:00:49

标签: r igraph

正如问题中所说。我的网络有许多平行的边,例如,一个有18个顶点和693个边。

LpOTb.dc.rd <- list()
for (x in seq_len(1000L)) {
  LpOTb.dc.rd[[x]] <- erdos.renyi.game(18, 
                                       693,
                                       type = "gnm",
                                       loops = T)
}

我想建立一个随机网络与之比较,但我不断收到错误消息:

Error in erdos.renyi.game(18, 693, type = "gnm", loops = T) : 
At games.c:703 : Invalid number (too large) of edges, Invalid value

我宁愿不简化我的网络并考虑随机边缘权重,主要是因为其中有30多个,并且我必须为我的网络重做所有指标。

1 个答案:

答案 0 :(得分:0)

您可以使用graph_from_data_frame生成具有18个顶点和693条边的随机图。为了匹配上面的代码,我制作了一个允许循环的无向图。

library(igraph)
Start = sample(18, 693, replace=TRUE)
End   = sample(18, 693, replace=TRUE)
df = data.frame(Start, End)

g = graph_from_data_frame(df, directed=FALSE)
vcount(g)
[1] 18
ecount(g)
[1] 693

如果要生成多个这样的图形,可以模仿注释中提到的previous answer中的代码。

library(igraph)
set.seed(1)
gs <- list()
for (x in seq_len(100L)) {
    Start = sample(18, 693, replace=TRUE)
    End   = sample(18, 693, replace=TRUE)
    df = data.frame(Start, End)
    gs[[x]]= graph_from_data_frame(df, directed=FALSE)
}