【发布时间】:2017-01-03 11:57:58
【问题描述】:
我有一个大的 igraph 对象,几乎有 1M 节点和 1.5M 边。在研究了一段时间后,我找不到对节点的邻居属性求和的过程,在这种情况下,它是二进制的。目前,我找到的最佳解决方案如下:
V(g)$sum = sapply( ego(g,1,V(g),mode = 'all',mindist = 1), function(v) sum(V(G)[v]$attr) )
但是,12 小时后它仍然嘎吱作响。
有什么建议吗?
更新 1:让我们考虑下图
library(igraph)
G <- graph.formula(1-+2,1-+3,2-+4,2-+5,3-+6,5-+7,7-+8,8-+9,9+-7, 9-+10,
6-+9,1-+5,3-+9,10-+11,11-+12,11-+5,12-+4,4-+10,10-+4,11-+10)
V(G)$attr = c(1,1,0,0,1,0,1,0,1,0,1,0)
plot(G, vertex.label.color = "white", edge.width=E(G)$weight, layout = layout.circle(G))
期望的结果应该是这样的......
sapply( ego(G,1,V(G),mode = 'all',mindist = 1), function(v) sum(V(G)[v]$attr) )
[1] 2 2 2 1 4 1 2 2 1 2 1 1
@Tamás,我尝试在不使用循环的情况下访问邻居函数,但我得到的不是上述结果...
sapply(neighbors(G,V(G)),function (v) sum(V(G)[v]$attr))
2 3 5
1 0 1
【问题讨论】:
标签: r igraph sna large-data