[英]Generating the list of edge weights for each vertex in igraph
igraph
函数:
nn.list <- adjacent_vertices(g, V(g))
输出每个顶点的相邻顶点列表。
这是非常有用的。 但是现在我需要包含边缘权重的类似列表。
例如,如果顶点600
具有遵循相邻顶点597, 598, 599, 601
从找到的nn.list[[600]]
我现在需要一个列表,其中条目600
给出顶点之间的边的权值600
与每个邻近顶点的597, 598, 599, 601
。
我可以使用for循环执行此操作-但速度很慢。 我的网络大约有10^4
节点和10^5
边缘。 我正在寻找一种矢量化方法。 igraph
是否有内置函数可以帮助我做到这一点? 有什么建议么?
library(igraph)
g<-make_empty_graph(directed = F)
g<-add.vertices(g,c(10))
g<-add_edges(g,c(3,5))
g<-add_edges(g,c(4,5))
g<-set_edge_attr(graph = g,name="weight",index = E(g)[1],value = 0.3)
g<-set_edge_attr(graph = g,name="weight",index = E(g)[2],value = 10)
gedges<-E(g)
gweights <- E(g)$weight
as_adj(g)
as_adj(g,attr="weight")
as_adj(g)
as_adj(g,attr="weight")
as_adj(g,attr="weight", edges = T,sparse = F)
如果要检索所有边的向量,请使用E(g)
,如果要获取所有权重的向量,请使用E(g)$weight
然后,由于您似乎需要一个adjacency matrix
,可以使用as_adj
调整参数,直到获得所需的所有信息!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.