我们能否在没有使用R?
的循环的情况下找到图中所有顶点对的公共邻居例如,我们使用以下命令在TD1图中查找节点1和2的公共邻居:
intersect(neighborhood(graph=TD1,order=1,nodes=1),neighborhood(graph=TD1,order=1,nodes=2))
但我需要找到每对顶点的公共邻居,因为使用循环图形很大是非常耗时的!这个程序有功能吗?
答案 0 :(得分:1)
我们可以使用邻接图来获得显示连接的稀疏矩阵。然后,将其转换为data.table以供邻居加入。然后,通过顶点不相同的顶点对以及不重复顶点对的顶点连接邻居
library(data.table)
library(igraph)
numVer <- 5
g <- erdos.renyi.game(numVer, 1)
plot(g)
adjSM <- as(get.adjacency(g), "dgTMatrix")
adjDT <- data.table(V1=adjSM@i+1, V2=adjSM@j+1)
res <- adjDT[adjDT, nomatch=0, on="V2", allow.cartesian=TRUE
][V1 < i.V1, .(Neighbours=paste(V2, collapse=",")),
by=c("V1","i.V1")][order(V1)]
res