使用的igraph節點度打印邊緣列表我的新使用的igraph R和要執行以下操作:與R中
1)計算的路徑長度分佈。我可以使用庫中的直接函數來找到平均路徑長度,但是如何爲每對頂點做到這一點,所以我得到路徑長度分佈?
2)我想找出所有比鄰居有更高度的節點。我嘗試將E()函數與degree()結合使用,但不起作用。
由於
使用的igraph節點度打印邊緣列表我的新使用的igraph R和要執行以下操作:與R中
1)計算的路徑長度分佈。我可以使用庫中的直接函數來找到平均路徑長度,但是如何爲每對頂點做到這一點,所以我得到路徑長度分佈?
2)我想找出所有比鄰居有更高度的節點。我嘗試將E()函數與degree()結合使用,但不起作用。
由於
1)可使用path.length.hist
解決:
g <- graph.data.frame(data.frame(a=c(1:3),b=c(2:4)),directed=FALSE)
plot(g)
## (1)--(2)--(3)--(4)
out <- path.length.hist(g,directed=FALSE)
out
#$res
#[1] 3 2 1
#
#$unconnected
#[1] 0
所以out$res
給出3條路徑長度爲== 1,2與長度== 2和1與長度== 3,其基本上是直方圖/條形圖數據。如果必要的話,你可能會擴大到獲取表示像分佈的載體:
rep(seq_along(out$res),out$res)
#[1] 1 1 1 2 2 3
它檢查出來:
mean(rep(seq_along(out$res),out$res))
#[1] 1.666667
average.path.length(g)
#[1] 1.666667
2) - 這樣的事情也許:
g <- graph.data.frame(data.frame(a=c(1:3,2),b=c(2:4,5)),directed=FALSE)
# node 2 has a higher degree than its neighbours
sapply(
neighborhood(g,order=1),
function(x) {degs <- degree(g,x); all(degs[1] > degs[-1]);}
)
#[1] FALSE TRUE FALSE FALSE FALSE
對於2)它實際上是更簡單,更快,在我看來做更像這樣的可讀性:
g <- graph.formula(1-2-3-4, 2-5)
degs <- degree(g)
sapply(V(g), function(x) all(degs[neighbors(g, x)] < degs[x]))
# [1] FALSE TRUE FALSE FALSE FALSE