47668 # Counting how many vertices in a neighbourhood have a given attribute with edge weights in igraph for

This is related to this question. I have a very large graph, on the order of 100,000 vertices in igraph. Each vertex has an attribute `att` which is a logical value. Edges are weighted with positive integer weights. For each vertex v, I would like to sum the edge weights of edges that connect `v` to a vertex where `att=T`.

We can use the following as an example

```set.seed(42) g <- erdos.renyi.game(169081, 178058, type="gnm") V(g)\$att <- as.logical(rbinom(vcount(g), 1, 0.5)) ```

Here's one way to get, for each vertex `v,` the sum of edge weights of neighboring vertices with `att=T`. Gabor might have a more elegant way that is much faster.
```library(igraph) set.seed(42) g <- erdos.renyi.game(169081, 178058, type="gnm") V(g)\$att <- as.logical(rbinom(vcount(g), 1, 0.5)) E(g)\$weight <- sample(10, ecount(g), replace=TRUE) #integer weights sumEdgeWeightsOfEdgesFromVertexV<- function(v){ totwt <- 0 #get all neighbors of vertex v all_neighbors_of_v <- V(g)[nei(v)] #subset to those with att to be TRUE att_nei <- as.vector(all_neighbors_of_v[all_neighbors_of_v\$att==TRUE]) #sum all the weights, edge by edge for( ver in att_nei) { totwt <- totwt + E(g, c(v,ver))\$weight } totwt } # sapply(V(g), sumEdgeWeightsOfEdgesFromVertexV) ```