# transformGraphBy: Apply a function to a graph considering non-diagonal... In netdiffuseR: Analysis of Diffusion and Contagion Processes on Networks

## Description

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`.

## Usage

 ```1 2 3 4 5 6 7 8 9``` ```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, ...) ```

## Arguments

 `graph` A graph `INDICES` A vector of length n. `fun` A function. This function must return a matrix of class `dgCMatrix` with the same dimension as `dim(g)`. `...` Further arguments passed to `fun`

## Details

The transformation function `fun` must return a square matrix of size m*m, where m is the size of the subgroup given by `INDICES`. See examples below

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27``` ```# 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 ```

netdiffuseR documentation built on June 7, 2018, 5:05 p.m.