我想从网络中找到每个节点的邻居,然后我要计算每个邻居的度数。在最后一步中,我想获取一个节点的每个邻居的度之和。为此,我写了以下几行: 这是我到底想做什么的摘要:
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
有什么想法吗?
答案 0 :(得分:1)
没有理由使用循环。只需编写一个计算所需节点的函数,然后使用 $myCartDetails = $this.parent().parent().parent().parent().parent().parent().next().children().children().next().children();
将其映射到sapply
上即可:
V(x)
如果这不是预期的输出,则需要澄清一下预期的输出。