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

标签 r random igraph

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

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

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

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

最佳答案

您可以按照说明执行以下操作 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")

希望这对您有所帮助!

EDIT: no duplicates edges.

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

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")

关于r - 在 R 中,如何在节点之间随机生成边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378858/

相关文章:

r - 使用 R 在 igraph 中解释 watts.strogatz.game() 中的参数

r - igraph中的子组件失败

r - 当数据量很大时,dcast 无法转换字符列

r - 组内的 dplyr group_by() 和 slice()

java - 均匀随机访问集合

java - 创建武器类别和战斗类别

c - 如何从 c 函数 rand() 中获取更大的随机数

python - 删除 igraph for Python 中的多条边

c++ - 如何使用 Rcpp 将映射<double,T> 从 C++ 传递到 R

r - 使用 `deparse(substitute))` (或替代方法)时如何处理空格?