This helper function converts a bipartite matrix into a one-mode matrix.
as.one.mode(web, fill = 0, project="full", weighted=TRUE)
A matrix with lower trophic level species as rows, higher trophic level species as columns and number of interactions as entries.
What shall unobserved combinations be represented as in the one-mode matrix (see below)? Defaults to 0. Set to NA if links not possible for bipartite networks should be masked (i.e. those within a level).
There are different ways to convert a two-mode (bipartite) network into one-mode networks. The most common is to focus on one set (e.g. the n pollinators) and compute a n x n matrix with entries between species that pollinate the same plant (``higher''). Similarly, one can compute a k x k matrix for the k plant species (``lower''). Or, finally and the default, one can compute an (n+k) x (n+k) matrix in which only the observed interactions are present (``full''). This is in fact a near-trivial, symmetric matrix with 0s between species of the same trophic level.
Logical; shall the strength of links be included in the one-mode output? Defaults to TRUE, but can be set to FALSE to turn a weighted two-mode into a binary one-mode network.
A matrix of dimension (n+k) x (n+k), where n and k are the dimensions of the input web. Both dimensions are given the names of the original web (first the lower, then the higher trophic level).
In bipartite (or: two-mode) networks, participants are of different types (e.g. pollinators and plants, actors and parties in social research). Hence, a party cannot connect to another party except through actors. A pollinator interacts with another pollinator only through the host plant.
Much network theory, however, is based on one-mode networks, where all participants are listed in one vector, i.e. plants and pollinators alike, actors together with events. This function here transforms the more condensed bipartite representation into a one-mode-representation, filling the unobserved type of interactions (i.e. plants with plants and pollinators with pollinators) with 0 (unless you specify it differently in fill).
The lower trophic level (e.g. plants or rows) is listed first, then the higher trophic level (e.g. pollinators or columns). Hence, pollinator 2 becomes species number r+2, where r is the number of rows of the network matrix.
The benefit of this conversion is access to the wonderful R-package Social Network Analysis (sna), with its many one-mode indices (such as betweenness
, closeness
, centralization
, degree
, kpath.census
and so forth). Furthermore, gplot
in that package also provides cool network depictions well worth checking out.
With respect to bipartite, as.one.mode
is employed in the function nodespec
, which itself uses the sna-function geodist
.
Function projecting_tm
in package tnet provide smarter ways of converting two-modes into one-modes. This function can be accessed after transforming the web-matrix into an edge list using web2edges
.
# NOT RUN {
data(Safariland)
image(Safariland)
image(as.one.mode(Safariland))
# }
Run the code above in your browser using DataLab