# thicknessOf: Calculate Thickness of Horizons Matching Logical Criteria In aqp: Algorithms for Quantitative Pedology

 thicknessOf R Documentation

## Calculate Thickness of Horizons Matching Logical Criteria

### Description

This function calculates the cumulative (`method="cumulative"`, default) or maximum difference between (`method="minmax"`) horizons within a profile that match a defined pattern (`pattern`) or, more generally, any set of horizon-level logical expressions encoded in a function (`FUN`).

### Usage

``````thicknessOf(
x,
pattern = NULL,
hzdesgn = hzdesgnname(x, required = TRUE),
method = "cumulative",
prefix = "",
thickvar = "thickness",
depthvars = horizonDepths(x),
FUN = function(x, pattern, hzdesgn, ...) grepl(pattern, x[[hzdesgn]]),
na.rm = FALSE,
...
)
``````

### Arguments

 `x` A SoilProfileCollection `pattern` character. A pattern to match in `hzdesgn`; used with the default `FUN` definition for regular expression pattern matching on horizons. `hzdesgn` character. A column containing horizon designations or other horizon-level character label used to identify matches; used with the default `FUN` definition. `method` character. Either `"cumulative"` (default) or `"minmax"`. See details. `prefix` character. Column prefix for calculated `thickvar` (and `depthvar` for `method="minmax"`) column results. Default: `""`. `thickvar` character Length `1`. Column name to use for calculated thickness column. Default: `"thickness"` `depthvars` character. Length `2`. Column names to use for calculated minimum top depth and maximum bottom depth in `method="minmax"`. Default: `horizonDepths(x)` `FUN` function. A function that returns a logical vector equal in length to the number of horizons in `x`. See details. `na.rm` logical. Omit `NA` values in summaries of thickness and in matching? Default: `FALSE` `...` Additional arguments passed to the matching function `FUN`.

### Details

The two thickness methods currently available are:

• `method="cumulative"` (default): cumulative thickness of horizons where `FUN` returns true

• `method="minmax"`: maximum bottom depth minus minimum top depth of horizons where `FUN` returns true

If a custom function (`FUN`) is used, it should accept arbitrary additional arguments via an ellipsis (`...`). It is not necessary to do anything with arguments, but the result should match the number of horizons found in the input SoilProfileCollection `x`.

### Value

A data.frame-like object (corresponding to the `aqp_df_class()` of `x`) with one row per profile in `x`. First column is always the profile ID which is followed by `"thickness"`. In `method="minmax"` the upper and lower boundaries used to calculate `"thickness"` are also returned as `"tmin"` and `"tmax"` columns, respectively.

### Examples

``````data("jacobs2000")

# cumulative thickness of horizon designations matching "Bt"
thicknessOf(jacobs2000, "Bt")

# maximum bottom depth minus minimum top depth of horizon designations matching "Bt"
thicknessOf(jacobs2000, "Bt", prefix = "Bt_", method = "minmax")

# cumulative thickness of horizon designations matching "A|B"
thicknessOf(jacobs2000, "A|B", prefix = "AorB_")

# maximum bottom depth minus minimum top depth of horizon designations matching "A|B"
thicknessOf(jacobs2000, "A|B", method = "minmax", prefix = "AorB_")
# note that the latter includes the thickness of E horizons between the A and the B

# when using a custom function (be sure to accept ... and consider the effect of NA values)

# calculate cumulative thickness of horizons containing >18% clay
thicknessOf(jacobs2000, prefix = "claygt18_",
FUN = function(x, ...) !is.na(x[["clay"]]) & x[["clay"]] > 18)

``````

aqp documentation built on Sept. 11, 2024, 7:11 p.m.