2016-04-22 50 views
1

我們可以在沒有使用R的循環中找到圖中所有頂點對的公共鄰居嗎?我們可以在沒有使用R的循環中找到圖中所有頂點的鄰居嗎?

例如我們用下面的命令來查找節點1和2的共同的鄰居在TD1圖:

intersect(neighborhood(graph=TD1,order=1,nodes=1),neighborhood(graph=TD1,order=1,nodes=2))

但我需要找到每對頂點,並且因爲共同的鄰居圖形很大,使用循環非常耗時!這個程序有沒有功能?

回答

0

我們可以使用鄰接圖來獲得顯示連接的稀疏矩陣。然後,將其轉換爲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([email protected]+1, [email protected]+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 
相關問題