Посчитайте, сколько вершин в окрестности вершины имеют атрибут в igraph для R
У меня есть большой граф (на самом деле несколько) в igraph - порядка 100 000 вершин - и каждая вершина имеет атрибут, который либоtrue
или жеfalse
, Для каждой вершины я хотел бы посчитать, сколько из вершин, непосредственно связанных с ней, имеют атрибут. Мое текущее решение - следующая функция, которая принимает в качестве аргумента график.
attrcount <- function(g) {
nb <- neighborhood(g,order=1)
return(sapply(nb,function(x) {sum(V(g)$attr[x]}))
}
Это возвращает вектор отсчетов, который выключен на 1 для вершин, которые имеют атрибут, но я могу легко настроить это.
Проблема в том, что это происходит невероятно медленно, и кажется, что должен быть быстрый способ сделать это, поскольку, например, вычисление степени каждой вершины практически мгновенно сdegree(g)
.
Я делаю это глупо?
В качестве примера предположим, что это был наш график.
set.seed(42)
g <- erdos.renyi.game(169081, 178058, type="gnm")
V(g)$att <- as.logical(rbinom(vcount(g), 1, 0.5))