R/struct_equiv.R
transformGraphBy.Rd
When there are structural zeros given by groups, this function applies
a particular transformation function of a graph by groups returning a
square matrix of the same size of the original one with structural zeros
and the function applied by INDICES
.
transformGraphBy(graph, INDICES, fun = function(g, ...) g, ...) # S3 method for diffnet transformGraphBy(graph, INDICES, fun = function(g, ...) g, ...) # S3 method for dgCMatrix transformGraphBy(graph, INDICES, fun = function(g, ...) g, ...)
graph | A graph |
---|---|
INDICES | A vector of length \(n\). |
fun | A function. This function must return a matrix of class
|
... | Further arguments passed to |
The transformation function fun
must return a square matrix
of size \(m\times m\), where \(m\) is the size of the subgroup
given by INDICES
. See examples below
# Rewiring a graph by community -------------------------------------------- # Two Random graphs of different size set.seed(123) g0 <- rgraph_ba(m=2, self=FALSE) g1 <- rgraph_ba(m=3, t=19, self=FALSE) # Need a place to store both networks together! G <- methods::new( Class = "dgCMatrix", Dim = c(1L,1L)*(nnodes(g0) + nnodes(g1)), p = rep(0L, (nnodes(g0) + nnodes(g1)) + 1L) ) # Filling the matrix G[1:nnodes(g0),1:nnodes(g0)] <- g0 G[(nnodes(g0) + 1):nnodes(G), (nnodes(g0) + 1):nnodes(G)] <- g1 # Creating an index (community) indx <- c(rep(1, nnodes(g0)), rep(2, nnodes(g1))) # Apply the rewiring algorithm per group ans <- transformGraphBy(G, indx, function(g, ...) { rewire_graph(g, 100, "swap") }) ans#> 31 x 31 sparse Matrix of class "dgCMatrix"#>#> #> 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 2 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 3 . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 4 . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 5 . . 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 6 1 . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 7 . . 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 8 . 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 9 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 10 . . 1 . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . #> 11 . . 1 . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . #> 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #> 13 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . #> 14 . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . #> 15 . . . . . . . . . . . . . . . . . . . 1 . . 1 . . . . . . . . #> 16 . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . #> 17 . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . #> 18 . . . . . . . . . . . 2 1 . . . . . . . . . . . . . . . . . . #> 19 . . . . . . . . . . . . 1 1 1 . . . . . . . . . . . . . . . . #> 20 . . . . . . . . . . . . 2 1 . . . . . . . . . . . . . . . . . #> 21 . . . . . . . . . . . . . 1 . . . . 2 . . . . . . . . . . . . #> 22 . . . . . . . . . . . . 1 . 2 . . . . . . . . . . . . . . . . #> 23 . . . . . . . . . . . . 1 2 . . . . . . . . . . . . . . . . . #> 24 . . . . . . . . . . . . . 1 . 1 . . . . . . 1 . . . . . . . . #> 25 . . . . . . . . . . . . . 1 . . . . . 1 . . 1 . . . . . . . . #> 26 . . . . . . . . . . . 2 . 1 . . . . . . . . . . . . . . . . . #> 27 . . . . . . . . . . . . 1 1 . . . . . 1 . . . . . . . . . . . #> 28 . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . #> 29 . . . . . . . . . . . . 1 . . 2 . . . . . . . . . . . . . . . #> 30 . . . . . . . . . . . . 1 2 . . . . . . . . . . . . . . . . . #> 31 . . . . . . . . . . . . 2 . . . . . . . . . 1 . . . . . . . .