我有两个基于不同条件的相同顶点的网络。我想基于另一个网络的连接添加一个网络的边缘属性。也就是说,如果节点A和B在网络2中连接,我要记下“ 1”作为网络1中的属性,如果未连接,则记下“ 0”。我想知道如何使用R软件包或其他软件实现我的目标?任何建议都欢迎。非常感谢您的建议!
答案 0 :(得分:1)
您可以使用igraph
包在R中进行此操作。由于您不提供任何数据,因此我将举一个例子。
示例数据
library(igraph)
set.seed(1234)
g1=erdos.renyi.game(10, 0.35)
g2=erdos.renyi.game(10, 0.35)
par(mfrow=c(1,2))
plot(g1)
plot(g2)
现在,我们可以创建所需的edge属性。我们将所有值初始化为零,然后循环遍历g2中的每个边。如果g1中出现相同的边,则将属性更改为1。
E(g2)$net1 = 0
for(e in E(g2)) {
if(are_adjacent(g1, ends(g2,e)[1], ends(g2,e)[2])) {
E(g2)$net1[e] = 1 }
}
E(g2)$net1
[1] 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
E(g2)[which(E(g2)$net1 > 0)]
+ 4/19 edges from 3bdc176:
[1] 3--4 4--5 4--6 5--7
您可以看到属性net1
表示共享链接为:
3--4 4--5 4--6 5--7
这与情节相符。