将随机网络拆分为R中的两个网络
我使用igraph库在R中创建了一个无向随机(鄂尔多斯仁义)网络。它由100个节点组成,两个节点之间存在边的概率p为0.2 这是我创建随机网络的代码:将随机网络拆分为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的
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[,])