transformGraphBy | R Documentation |
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 class 'diffnet'
transformGraphBy(graph, INDICES, fun = function(g, ...) g, ...)
## S3 method for class 'dgCMatrix'
transformGraphBy(graph, INDICES, fun = function(g, ...) g, ...)
graph |
A graph |
INDICES |
A vector of length |
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
A transformed version of the network, with the desired function applied by blocks.
# 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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.