The spectra from all objects will be put into one object.
The resulting object has all wavelengths that occur in any of the input
objects, wl.tolerance
is used to determine which difference in the
wavelengths is tolerated as equal: clusters of approximately equal
wavelengths will span at most 2 * wl.tolerance
.
Differences up to +/- wl.tolerance
are considered equal.
The returned object has wavelengths that are the weighted average (by number of spectra) of the wavelengths within any such cluster of approximately equal wavelengths.
Labels will be taken from the first object where they are encountered.
However, the order of processing objects is not necessarily the same as
the order of objects in the input: collapse
first processes groups of
input objects that share all wavelengths (within wl.tolerance
).
Data points corresponding to wavelengths not in the original spectrum will be set to NA. Extra data is combined in the same manner.
If the objects are named, the names will be preserved in extra data column
$.name
.
If the wavelengths are names, names are preserved and taken from the first
object where they were encountered, the same applies to possible column
names of the spectra matrix.
collapse(
...,
wl.tolerance = hy_get_option("wl.tolerance"),
collapse.equal = TRUE
)
hyperSpec
objects to be collapsed into one object.
Instead of giving several arguments, a list with all objects to be
collapsed may be given.
Tolerance to decide which wavelengths are considered equal.
Logical indicating whether to try first finding
groups of spectra with (approximately) equal wavelength axes. If the
data is known to contain few or no such groups, collapse()
will be
faster with this first pass being turned off.
A hyperSpec
object
merge()
, rbind()
, and plyr::rbind.fill()
barbiturates[1:3]
#> [[1]]
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 37 data points / spectrum
#>
#> [[2]]
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 34 data points / spectrum
#>
#> [[3]]
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 29 data points / spectrum
#>
collapse(barbiturates[1:3])
#> hyperSpec object
#> 3 spectra
#> 4 data columns
#> 57 data points / spectrum
a <- barbiturates[[1]]
b <- barbiturates[[2]]
c <- barbiturates[[3]]
a
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 37 data points / spectrum
b
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 34 data points / spectrum
c
#> hyperSpec object
#> 1 spectra
#> 4 data columns
#> 29 data points / spectrum
collapse(a, b, c)
#> hyperSpec object
#> 3 spectra
#> 4 data columns
#> 57 data points / spectrum
collapse(barbiturates[1:3], collapse.equal = FALSE)
#> hyperSpec object
#> 3 spectra
#> 4 data columns
#> 57 data points / spectrum