Learn R Programming

silviculture (version 0.2.0)

silv_treatment_thinning: Calculate Forestry Thinning Schemes

Description

Calculates thinning schemes for forest management by selecting trees to extract based on specified criteria. Supports both thinning from below (removing smaller trees) and thinning from above (removing larger trees) approaches.

Usage

silv_treatment_thinning(
  data,
  var,
  diameter,
  ntrees,
  thinning = "below",
  perc = 0.3,
  .groups = NULL
)

Value

A silviculture::Thinning object with three items:

  • data: the input data with two new columns

  • group_metrics: it will include the data from the silviculture::Inventory object

  • thinning_opts: options used for S7 methods

Arguments

data

A data frame, or silviculture::Inventory object. See details.

var

A variable used for calculating the thinning. Typically used variables basal area, number of trees, or volume

diameter

Numeric vector with diametric classes

ntrees

Numeric vector with the number of trees per hectare of each diametric class

thinning

Charater string specifying the thinning type. Available options are below and above

perc

Numeric value between 0 and 1 specifying the percentage of var to extract

.groups

A character vector with variables to group by (e.g. plot id, tree species, etc). Ignored when using a silviculture::Inventory object

Details

This function implements common silvicultural thinning practices:

Thinning from below: Removes trees with the lowest values of the specified variable. This approach typically removes suppressed, damaged, or poor-quality trees, mimicking natural mortality processes.

Thinning from above: Removes trees with the highest values of the specified variable. This approach harvests the most valuable trees while leaving smaller trees to continue growing.

The function calculates which trees to extract based on the ranking of the specified variable and the desired thinning percentage. When grouping variables are provided, thinning is calculated separately for each group.

Using a silviculture::Inventory object The result of silv_summary() can be used as the data argument. If so, the .groups will be taken from this object, and it will keep the previous data in a new S7 object.

See Also

silv_summary()

Examples

Run this code
# Get summary of inventory data
inventory <- inventory_samples |>
 silv_summary(
   diameter  = diameter,
   height    = height,
   plot_size = 25,
   .groups   = c('plot_id', 'species')
 )

## Thinning from below removing 30% of trees based on basal area
silv_treatment_thinning(
  data     = inventory,
  var      = g_ha,
  diameter = dclass,
  ntrees   = ntrees_ha,
  thinning = "below",
  perc     = 0.3
)

## Thinning from above removing 20% of trees based on basal area
silv_treatment_thinning(
  data     = inventory,
  var      = g_ha,
  diameter = dclass,
  ntrees   = ntrees_ha,
  thinning = "above",
  perc     = 0.2
)

Run the code above in your browser using DataLab