Посчитайте, сколько вершин в окрестности вершины имеют атрибут в 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))

Ответы на вопрос(2)

Ваш ответ на вопрос