根据属性值计算节点指标

时间:2019-11-13 19:02:10

标签: r igraph

我经常想为图中的所有顶点计算度量,但是仅基于它们与具有特定属性的顶点的连接,例如图

library(igraph)
set.seed(2)

g <- erdos.renyi.game(8, 0.5)

V(g)$name <- paste0("ID", 1:8)
V(g)$rand_attr <- rep(c("A", "B"), 4)

plot(g,
     vertex.label = paste(V(g)$name, V(g)$rand_attr),
     vertex.shape = "none")

example graph

现在假设我想为每个顶点计算“ B”型连接的数量。我能想到的唯一方法是创建一系列子图,其中包括焦点顶点和所有“ B”顶点,像这样

for (i in V(g)$name) {
  subg <- induced_subgraph(g, 
                     vids = c(which(V(g)$name == i), which(V(g)$rand_attr == "B")))
  d <- degree(subg, v = which(V(subg)$name == i))
  print(d)
}
ID1 
  3 
ID2 
  2
ID3 
  3  
...

这给了我想要的输出,但感觉有点笨拙且效率低下。是否有内置的功能或更好的方法来执行此操作而使我丢失了?

1 个答案:

答案 0 :(得分:0)

我将尝试获取“ B”顶点的名称。然后,使用函数neighbor_vertices可以为每个顶点返回相邻顶点的名称。然后只需计算列表中每个连接的顶点的数量即可。

{food: "pizza", car: "ford", animal: "dog"}