select: Competitor Selection Rules


Functions returning TRUE for plants that compete with a given subject plant, or FALSE otherwise. The decision can depend on distance and plant marks. For use in pairwise.


size.sel(imarks, jmarks, dists, dranks, par = list(k = 0.2, smark
    = 1))

powlinear.sel(imarks, jmarks, dists, dranks, par = list(ki = 0.2,
    kj = 0, p = 1, r0 = 0, smark=1))



Marks for the subject plant, a 1-row data frame.


Data frame with marks for potential competitors


Vector of distances between the subject plant and the potential competitors.


Distance ranks.


List of parameters.


The values of par must be given in the argument selpar of pairwise, they are shown here as examples.

smark in par indicates the location of the plant size variable in marks. It can be a data frame column number, or a string id like "dbh".

size.sel is a simple example where competitors are selected within a radius proportional to plant size. This corresponds to the second example in Section 9.2.1 of Burkhart and Tomé (2012).

Note that their first example (fixed radius) is implemented by giving a value to maxR in pairwise, no select function is needed. Similarly, their third example (fixed number of nearest neighbors) is obtained by giving a value to maxN.

powlinear.sel is a general form that covers all the other examples in Burkhart and Tomé (2012) by choosing specific parameters values (except for the competition elimination angle, which depends on relative positions among competitors and not only on distances). It implements a condition distance < ki * sizei^p + kj * sizej^p + r0, with the following special cases:

Multiple of crown radius: kj=0, p=1, r0=0, smark="crownwidth".

Angle count sampling: ki=0, p=1, r0=0, smark="dbh".

Areas of influence overlap: ki=kj, p=1, r0=0, if the radius is a linear function of size (p not 1 for an allometric relationship).

Vertical search cone: If the height of the cone vertex is constant, proportional to tree height, or more generally some linear function c_1 h_i + c_2, then ki = - c_1 / \tan(90 - β/2), kj = 1 / \tan(90 - β/2), p=1, r0 = - c_2 / \tan(90 - β/2), smark="height".

These and other examples could be coded directly if computational efficiency is important.


Logical vector of length equal to the length of dists.


Oscar García.


Burkhart, H. E. and Tomé, M. (2012) Modeling Forest Trees and Stands. Springer.

See Also


Questions? Problems? Suggestions? or email at

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