R/checkHzDepthLogic.R
checkHzDepthLogic.Rd
This function inspects a SoilProfileCollection
object, looking for four common errors in horizon depths:
bottom depth shallower than top depth
equal top and bottom depth
missing top or bottom depth (e.g. NA
)
gap or overlap between adjacent horizons (only if byhz = FALSE
)
checkHzDepthLogic(
x,
hzdepths = NULL,
idname = NULL,
fast = FALSE,
byhz = FALSE
)
SoilProfileCollection
or data.frame
object to check
character vector, describing top and bottom depths in a SoilProfileCollection
or data.frame
. horizonDepths(x)
is used when x
is a SoilProfileCollection
.
character, describing the column containing profile IDs in a SoilProfileCollection
or data.frame
. idname(x)
is used when x
is a SoilProfileCollection
.
logical, When TRUE
, details about specific test results are not needed, the operation can allocate less memory and run approximately 5x faster.
logical, apply logic tests to profiles (FALSE
) or individual horizons (TRUE
)?
A data.frame
containing profile IDs, validity boolean (valid
) and test results if fast = FALSE
.
The data.frame
will have as many rows as profiles in x
(length(x)
).
id
: Profile IDs, named according to idname(x)
valid
: boolean, profile passes all of the following tests
depthLogic
: boolean, errors related to depth logic
sameDepth
: boolean, errors related to same top/bottom depths
missingDepth
: boolean, NA in top / bottom depths
overlapOrGap
: boolean, gaps or overlap in adjacent horizons (NA
when byhz = TRUE
)
## sample data
data(sp3)
depths(sp3) <- id ~ top + bottom
# these data should be clean
res <- checkHzDepthLogic(sp3)
head(res)
#> id valid depthLogic sameDepth missingDepth overlapOrGap
#> 1 1 TRUE FALSE FALSE FALSE FALSE
#> 2 10 TRUE FALSE FALSE FALSE FALSE
#> 3 2 TRUE FALSE FALSE FALSE FALSE
#> 4 3 TRUE FALSE FALSE FALSE FALSE
#> 5 4 TRUE FALSE FALSE FALSE FALSE
#> 6 5 TRUE FALSE FALSE FALSE FALSE
# less memory if only concerned about net validity
res <- checkHzDepthLogic(sp3, fast = TRUE)
head(res)
#> id valid
#> 1 1 TRUE
#> 2 10 TRUE
#> 3 2 TRUE
#> 4 3 TRUE
#> 5 4 TRUE
#> 6 5 TRUE