This package extends existing network analysis packages for analysing multimodal and multilevel networks. The package is intended as a software companion to the book:

David Knoke, Mario Diani, James Hollway, and Dimitris Christopoulos (2021)

Multimodal Political Networks. Cambridge University Press: Cambridge.

The package is offered as a complement to existing R packages for network analysis and thus tries to work well with your existing analytic workflows and the classes invoked. All `{migraph}`

measures and models work with data in base formats:

- adjacency and incidence
*matrices* - one-mode and two-mode
*data frame*edgelists

as well as with objects from the following packages:

`{migraph}`

can also import and export to Excel edgelists and UCINET files.

`{migraph}`

offers a range of measures and models with sensible defaults. Many wrap existing functions in common packages for use with one-mode networks, but extend these to treat and/or normalise for two-mode (and sometimes three-mode) networks correctly. Functions are given intuitive and succinct names that avoid conflicts with existing function names wherever possible.

- Coercion between classes:
`as_igraph()`

,`as_tidygraph()`

,`as_network()`

,`as_edgelist()`

, and`as_matrix()`

- Logical tests of properties: e.g.
`is_twomode()`

,`is_directed()`

,`is_labelled()`

,`is_weighted()`

- Transforming properties:
`to_undirected()`

,`to_unnamed()`

,`to_unweighted()`

,`to_onemode()`

, and`to_main_component()`

- From two-mode to one-mode:
`project_rows()`

and`project_cols()`

- Centrality:
`node_degree()`

,`node_closeness()`

,`node_betweenness()`

, and`node_eigenvector()`

- Centralization:
`graph_degree()`

,`graph_closeness()`

,`graph_betweenness()`

, and`graph_eigenvector()`

- Cohesion:
`graph_density()`

,`graph_reciprocity()`

,`graph_transitivity()`

,`graph_equivalency()`

, and`graph_congruency()`

- Censuses:
`node_tie_census()`

,`node_dyad_census()`

,`node_triad_census()`

,`node_mixed_census()`

,`node_quad_census()`

, and`graph_triad_census()`

- Other measures: e.g.
`node_constraint()`

,`node_smallworld()`

- Blockmodelling:
`blockmodel_concor()`

,`cluster_structural_equivalence()`

,`cluster_regular_equivalence()`

- Linear regression:
`netlm()`

`autographr()`

for plotting graphs with sensible defaults based on their properties- New layouts: e.g.
`layout_tbl_graph_frgrid()`

for snapping Fruchterman-Reingold to a grid - Class-based plots: e.g.
`plot.blockmodel()`

Please explore the list of functions to find out more.

The easiest way to install the latest stable version of `{migraph}`

is via CRAN. Simply open the R console and enter:

`install.packages('migraph')`

You can then begin to use `{migraph}`

by loading the package:

`library(migraph)`

This will load any required packages and make the data contained within the package available. The version from CRAN also has all the vignettes built and included. You can check them out with:

`vignettes(package = "migraph")`

For the latest development version, for slightly earlier access to new features or for testing, you may wish to download and install the binaries from Github or install from source locally.

The latest binary releases for all major OSes – Windows, Mac, and Linux – can be found here. Download the appropriate binary for your operating system, and install using an adapted version of the following commands:

- For Windows:
`install.packages("~/Downloads/migraph_winOS.zip", repos = NULL)`

- For Mac:
`install.packages("~/Downloads/migraph_macOS.tgz", repos = NULL)`

- For Unix:
`install.packages("~/Downloads/migraph_linuxOS.tar.gz", repos = NULL)`

To install from source the latest main version of `{migraph}`

from Github, please install the `{remotes}`

or `{devtools}`

package from CRAN and then:

- For latest stable version:
`remotes::install_github("snlab-ch/migraph")`

- For latest development version:
`remotes::install_github("snlab-ch/migraph@develop")`

It draws together, updates, and builds upon many functions currently available in other excellent R packages such as `{bipartite}`

, `{multinet}`

, and `{tnet}`

, and implements many additional features currently only available outside the R ecosystem in packages such as **UCINET**.