Data-driven evaluation of generalized horizon labels using nMDS and silhouette width.

```
evalGenHZ(
obj,
genhz = GHL(obj, required = TRUE),
vars,
non.matching.code = "not-used",
stand = TRUE,
trace = FALSE,
metric = "euclidean"
)
```

- obj
a

`SoilProfileCollection`

object- genhz
name of horizon-level attribute containing generalized horizon labels

- vars
character vector of horizon-level attributes to include in the evaluation

- non.matching.code
code used to represent horizons not assigned a generalized horizon label

- stand
standardize variables before computing distance matrix, passed to

`cluster::daisy()`

- trace
verbose output from passed to

`MASS::isoMDS()`

- metric
distance metric, passed to

`cluster::daisy()`

a list is returned containing:

horizons:

`c('mds.1', mds.2', 'sil.width', 'neighbor')`

stats: mean and standard deviation

`vars`

, computed by generalized horizon labeldist: the distance matrix as passed to

`MASS::isoMDS()`

Non-metric multidimensional scaling is performed via `MASS::isoMDS()`

.
The input distance matrix is generated by `cluster::daisy()`

using
(complete cases of) horizon-level attributes from `obj`

as named in
`vars`

.

Silhouette widths are computed via `cluster::silhouette()`

. The input
distance matrix is generated by `cluster::daisy()`

using (complete cases
of) horizon-level attributes from `obj`

as named in `vars`

. Note
that observations with genhz labels specified in `non.matching.code`

are removed filtered before calculation of the distance matrix.