查找节点邻居的度值之和

时间:2018-08-14 11:25:38

标签: r igraph nearest-neighbor degrees

我想从网络中找到每个节点的邻居,然后我要计算每个邻居的度数。在最后一步中,我想获取一个节点的每个邻居的度之和。为此,我写了以下几行: 这是我到底想做什么的摘要:

result<-(1/degree(v))/sum(1/degree(neighbors of node 'v'))

res是每个节点的该值的结果,因此它将是一个数值向量。

假设x是一个igraph对象:

edgelist <- read.table(text = "
A B
B C
C D
D E
C F
F G")

library(igraph)
x<- graph.data.frame(edgelist)
vids = V(x)

deg.inverse <- 1/degree(x)
  res <- double()

for (v in V(x)[vids]) {

  rad<-0

  for (vv in V(x)) {
    if (deg.inverse[vv] == Inf) {
      rad <- Inf
      break
    }

    else {

      rad <- rad + deg.inverse[vv]

      nb <- neighborhood(x, order = 1, V(x)[vids][vv])

    }

    res <- append(res, rad/sum(1/(degree(x)[nb[[1]][v]])))
  }
}

但是,我遇到了错误。

 Error in simple_vs_index(x, lazy_eval(args[[1]])) : 
  Unknown vertex selected 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

没有理由使用循环。只需编写一个计算所需节点的函数,然后使用 $myCartDetails = $this.parent().parent().parent().parent().parent().parent().next().children().children().next().children(); 将其映射到sapply上即可:

V(x)

如果这不是预期的输出,则需要澄清一下预期的输出。