Uses matrix outer product to determine all pair-wise differences in attr for the horizons of p. Supplies attr to threshold.fun to determine the minimum value criterion to return TRUE in output matrix for an "increase". Also, computes all pair-wise distances in depth dimension to determine whether the vertical distance criteria have been met simultaneously with attr increase.

get.increase.matrix(p, attr, threshold.fun, vertical.distance)

Arguments

p

a SoilProfileCollection, containing a single profile

attr

horizon attribute name to get the "increase" of

threshold.fun

a function that returns the threshold (as a function of attr); may return a constant single value

vertical.distance

the vertical distance (determined from difference SPC top depth variable) within which increase must be met

Value

Returns a square logical matrix reflecting where the increase criteria were met.

get.increase.depths converts to horizon dop depth by using above matrix output to determine depths where increase is met.

Details

This function assumes that the threshold.fun supplied by the user returns either a constant or a vector of equal length to its input.

Note that the threshold.fun result is allowed to contain NA, but that will result in no output for affected cells.

get.increase.depths performs the conversion of the square matrix output of get.increase.matrix back to horizon top depth for where criteria were met.

See also

getArgillicBounds, crit.clay.argillic

Author

Andrew Gene Brown

Examples


data(sp1, package = 'aqp')
depths(sp1) <- id ~ top + bottom
site(sp1) <- ~ group

p <- sp1[1]
attr <- 'prop' # clay contents
foo <- get.increase.matrix(p, threshold.fun = crit.clay.argillic,
                           attr = attr, vertical.distance = 30)
foo
#>       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
#> [1,] FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] FALSE FALSE FALSE  TRUE FALSE FALSE
#> [3,] FALSE FALSE FALSE  TRUE  TRUE FALSE
#> [4,] FALSE FALSE FALSE FALSE  TRUE FALSE
#> [5,] FALSE FALSE FALSE FALSE FALSE FALSE
#> [6,] FALSE FALSE FALSE FALSE FALSE FALSE