无法理解igraph中的计数倍数和简化

无法理解igraph中的计数倍数和简化,r,matrix,igraph,R,Matrix,Igraph,我正在处理网络数据,在R中的igraph包中遇到了count.multiple的奇怪行为(至少我没有预料到) library(igraph) library(plyr) df <- data.frame( sender = c( "a", "a", "a", "b", "b", "c","c","d" ), receiver = c( "b", "b", "b", "c", "a", "d", "d", "a" ) ) 这正是我所期望的 但是,我无法使用ig

我正在处理网络数据,在R中的
igraph
包中遇到了
count.multiple
的奇怪行为(至少我没有预料到)

library(igraph)
library(plyr)

df <- data.frame( sender = c( "a", "a", "a", "b", "b", "c","c","d" ),
              receiver = c( "b", "b", "b", "c", "a", "d", "d", "a" ) )
这正是我所期望的

但是,我无法使用igraph的
count.multiple来重现这个结果,这正是我希望在igraph中实现的

df.graph <- graph.edgelist(as.matrix(df))
E(df.graph)$weight <- count.multiple(df.graph)
然后我使用了
simplify
命令:

df.graph <- simplify(df.graph)
我知道这里发生了什么,simplify只是添加了权重,但我不明白为什么/什么时候会使用它,而不是
ddply
正在做什么

有什么想法吗


谢谢

简化的默认行为是添加多条边的权重

为了避免重复计算,可以将初始权重设置为1

g <- graph.edgelist(as.matrix(df))
E(g)$weight <- 1
g <- simplify( g )
E(g)$weight

g这样做
count.multiple
那么
simplify
是多余的吗?是:在示例中,
count.multiple
将权重3分配给a→b边,但仍有三条边<代码>简化
然后将这些权重相加,得出总权重为9。我们最终得到所需重量的平方。
df.graph <- simplify(df.graph)
9 1 1 4 1
g <- graph.edgelist(as.matrix(df))
E(g)$weight <- 1
g <- simplify( g )
E(g)$weight
g <- graph.edgelist(as.matrix(df))
E(g)$weight <- count.multiple(g)
g <- simplify( g, edge.attr.comb = list(weight=max, name="concat", "ignore") )
E(g)$weight