查找节点邻居的度值总和
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)
如果这不是预期的输出,您需要澄清预期的输出是什么。
我想从网络中找到每个节点的邻居,然后我想计算每个邻居的度数。在最后一步中,我想要一个节点的每个邻居的度数之和。为此,我写了以下几行: 这是我喜欢做的事情的总结:
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)
如果这不是预期的输出,您需要澄清预期的输出是什么。