【发布时间】:2015-08-10 13:56:08
【问题描述】:
是否有一种我缺少的简单方法可以在 igraph 中创建一个简单、加权、有向网络的网状版本?这是相互边缘被替换为带有权重之间差异的单个边缘的地方,并且方向使得权重始终为正。一个简单的例子:
gGross <- graph_from_literal(A++B)
E(gGross)$weight <- c(12, 20)
gNet <- graph_from_literal(A+-B)
E(gNet)$weight <- c(8)
在矩阵表示法中,这将是
N_{ij} = (A_{ij} - A_{ji})_+
+ 表示保留积极的元素。
一个好的起点是类似于which_mutual 的东西,它给出了返回边缘的索引。我可以想象在 R 中编写一个长函数,但这似乎很慢。
【问题讨论】:
-
我在最后一点上取得了一些进展。
ends(g, E(g)[which_mutual(g)], names=FALSE)给出所有相互边的矩阵。这可以输入到应用程序中。 -
这几乎是我需要的
g2 <- as.undirected(g, mode="collapse", edge.attr.comb = function(x) x[1]-x[2])但不确定方向的可靠性。