将随机网络拆分为R中的两个网络

将随机网络拆分为R中的两个网络,r,networking,graph,igraph,R,Networking,Graph,Igraph,我使用igraph库在R中创建了一个无向随机(鄂尔多斯仁义)网络。它由100个节点组成,两个节点之间存在边的概率p为0.2 这是我创建随机网络的代码: original <- erdos.renyi.game(100, 0.2, type = c("gnp", "gnm"), directed = FALSE, loops = FALSE) 我需要将此随机网络拆分为两个网络(称为net1和net2),这样,如果选择了随机数“1”,则来自原始网络的两个节点之间的边将存在于net1的

我使用igraph库在R中创建了一个无向随机(鄂尔多斯仁义)网络。它由100个节点组成,两个节点之间存在边的概率p为0.2

这是我创建随机网络的代码:

original <- erdos.renyi.game(100, 0.2, type = c("gnp", "gnm"), directed = FALSE,
    loops = FALSE)
我需要将此随机网络拆分为两个网络(称为net1和net2),这样,如果选择了随机数“1”,则来自原始网络的两个节点之间的边将存在于net1的相同两个节点之间(或者如果选择了随机数“2”,则边将存在于net2中,同样存在于相同两个节点之间)

然后net1和net2可以看起来像这样,这取决于其边缘的随机数('1'和'2'):

      O                   O
                          |
                          |
O-----O     O       O     O-----O
      | \           |
      |  \          |
O     O   O         O-----O   O
     net1                net2
因此,如果net1在最初位于原始网络中的两个节点之间有一条边,则net2在相同的两个节点之间不会有该边(如果该边位于net2中,则该边也不应位于net1中)

我不知道如何将原始网络拆分为两个网络,并根据选择的随机数(“1”或“2”)在两个网络的相同节点之间创建边,就像原始网络一样

抱歉,如果这有点混乱,很难解释


任何帮助都将不胜感激。非常感谢。

对于一些
igraph
随机网络对象
a

# what is the order of a?
n <- length(V(a))

# random network
# we're only interested in this for that fact that it provides a
# random symmetric matrix with approx. half of its edges present
ran <- erdos.renyi.game(n, .5, type="gnp", directed=F)

# network 1 (as an igraph graph object)
g1 <- graph.adjacency(a[,] * ran[,])

# network 2 (also as an igraph graph object)
g2 <- graph.adjacency(a[,] * !ran[,])
#a的顺序是什么?

n你最好用一个可复制的例子来解释你想要什么。向我们展示一个网络,如果它被拆分,它可能会是什么样子。如果我想更改它,我将如何修改代码,以便如果概率小于或等于0.1,边缘进入net1,如果概率小于或等于0.9,边缘进入net2?如果概率超出此范围(即大于0.9),则边进入net1还是net2的概率为50-50?我可以通过生成0-1之间的随机数来实现这一点吗?如果随机数在0-0.1(0.1除外)之间,则边进入net1,如果随机数在0.1-1(0.1包括0.1)之间边缘进入net2?我生成这样一个随机数:
randnum=0&&randnum<0.1){put edge in net1}否则如果(randnum>=0.1&&randnum<1){put edge in net2}
。我只是不知道如何编写代码来查看边缘并在net1或net2中放置边缘。@LoneWolf您可以将
erdos.renyi.game()
(在上面的示例中设置为
.5
,从而生成50/50分割)的第二个参数设置为您想要的任何值。如果使用
0.1
,则以10%的概率,原始网络中的任何给定连接都将以
g1
结束,否则将以
g2
结束。
# what is the order of a?
n <- length(V(a))

# random network
# we're only interested in this for that fact that it provides a
# random symmetric matrix with approx. half of its edges present
ran <- erdos.renyi.game(n, .5, type="gnp", directed=F)

# network 1 (as an igraph graph object)
g1 <- graph.adjacency(a[,] * ran[,])

# network 2 (also as an igraph graph object)
g2 <- graph.adjacency(a[,] * !ran[,])