second.extinct: Secondary extinctions in bipartite networks

Description Usage Arguments Details Value Note Author(s) References See Also Examples


Calculates the consequences of removing a species from a bipartite network. With plotting and slope-estimation functionality.


second.extinct(web, participant = "higher", method = "abun", nrep = 10,
  details = FALSE, ext.row=NULL, ext.col=NULL)



Web is a matrix representing the interactions observed between higher trophic level species (columns) and lower trophic level species (rows). Usually this will be number of pollinators on each species of plants or number of parasitoids on each species of prey.


high (default) or low or both, depending if you want to exterminate higher trophic level species, lower trophic level species, or randomly choose species of both levels.


Random deletion of a species (random); according to its abundance, with least abundant going extinct first (abundance; default) or "degree" to build a sequence from the best-to-least connected species. This is the most extreme case, where the most generalist species goes extinct first (see Memmott et al. 1998). (Note that method="abundance" does not work with participant="both"; in this case a random sequence of species from both trophic levels is generated.) external will use the externally provided vector to determine extinction sequence.


Number of replicates of extermination sequence. Will not be considered for method abundance.


Logical; returns details, i.e. for each replicate the sequence of secondary extinctions. If set to FALSE (default), replicated runs will be averaged. Using anything but FALSE will not yield the correct object for further analysis. This switch is really only for understanding what second.extinct does and for possible debugging.


Optional vector giving the sequence in which lower-level species are to be deleted.


Optional vector giving the sequence in which higher-level species are to be deleted.


The procedure of this function is simple. For example imagine the web to represent a pollination web, in which pollinators die one by one. Set all entries of a column to zero, see how may rows are now also all-zero (i.e. species that are now not pollinated any more), and count these as secondary extinctions of the primary exterminated pollinator.

Internally, each extermination is achieved by a call to extinction, followed by a call to empty, which counts the number of all-zero columns and rows.

Although written for pollination webs (hence the nomenclature of pollinator and plant), it can be similarly applied to other types of bipartite networks. It is called by networklevel.


Function returns an object of class “bipartite” to ensure proper working of function plot.bipartite.

If details=FALSE, the returned object contains a matrix with columns representing the number of species going extinct from one step to the next, averaged across all runs.

If details=FALSE, the returned object will be a list of matrices containing the number of species going extinct at each step.

The objects attribute “exterminated” gives the name of the trophic level (pollinator or plant).


Note: The length of an extinction sequence is obviously given by the number of species in the selected trophic level. When setting participant="both", lengths will differ for each replicate run, since it is unpredictable in which sequence species go extinct, and hence how many secondary extinctions will pre-empt further primary extinctions.


Carsten F. Dormann


Memmott, J., Waser, N. M. and Price, M. V. (2004) Tolerance of pollination networks to species extinctions. Proceedings of the Royal Society B 271, 2605–2611.

See Also

networklevel calls second.extinct; extinction and empty are internal helper functions, and slope.bipartite calculates extinction slopes from the output of second.extinct.


## Not run: 
(ex <- second.extinct(Safariland, participant="lower", method="random", nrep=50, 
(ex <- second.extinct(Safariland, participant="lower", method="random", nrep=50, 

## End(Not run)

Search within the bipartite package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.