我经常想为图中的所有顶点计算度量,但是仅基于它们与具有特定属性的顶点的连接,例如图
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")
现在假设我想为每个顶点计算“ 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
...
这给了我想要的输出,但感觉有点笨拙且效率低下。是否有内置的功能或更好的方法来执行此操作而使我丢失了?
答案 0 :(得分:0)
我将尝试获取“ B”顶点的名称。然后,使用函数neighbor_vertices可以为每个顶点返回相邻顶点的名称。然后只需计算列表中每个连接的顶点的数量即可。
{food: "pizza", car: "ford", animal: "dog"}