查找节点邻居的度值总和

Finding the sum of degree value of a node's neighbors

我想从网络中找到每个节点的邻居,然后我想计算每个邻居的度数。在最后一步中,我想要一个节点的每个邻居的度数之和。为此,我写了以下几行: 这是我喜欢做的事情的总结:

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 

有什么想法吗?

没有理由使用循环。只需编写一个函数来计算您想要的节点,然后使用 sapply 将其映射到 V(x):

library(igraph)

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

x<- graph.data.frame(edgelist)

f <- function(v){
  (1/degree(x,v))/sum(1/degree(x,neighbors(x,v,'all')))
}

results <- sapply(V(x),f)

如果这不是预期的输出,您需要澄清预期的输出是什么。