Index wl2i() returns the column indices for the spectra matrix for the given wavelengths. i2wl() converts column indices into wavelengths.

wl2i(x, wavelength = stop("wavelengths are required."), unlist = TRUE)

i2wl(x, i)

Arguments

x

a hyperSpec object

wavelength

the wavelengths to be converted into column indices, either numeric or a formula, see details.

unlist

if multiple wavelength ranges are given, should the indices be unlisted or kept in a list?

i

the column indices into the spectra matrix for which the wavelength is to be computed

Value

A numeric containing the resulting indices for wl2i

i2wl returns a numeric with the wavelengths

Details

If wavelength is numeric, each of its elements is converted to the respective index. Values outside the range of x@wavelength become NA.

If the range is given as a formula (i.e. start ~ end, a sequence

index corresponding to start : index corresponding to end

is returned. If the wavelengths are not ordered, that may lead to chaos. In this case, call wl_sort() first.

Two special variables can be used: min and max, corresponding to the lowest and highest wavelength of x, respectively.

start and end may be complex numbers. The resulting index for a complex x is then

index (Re (x)) + Im (x)

Author

C. Beleites

Examples

flu
#> hyperSpec object #> 6 spectra #> 3 data columns #> 181 data points / spectrum
wl2i(flu, 405:407)
#> [1] 1 3 5
wl2i(flu, 405 ~ 407)
#> [1] 1 2 3 4 5
## beginning of the spectrum to 407 nm wl2i(flu, min ~ 407)
#> [1] 1 2 3 4 5
## 2 data points from the beginning of the spectrum to 407 nm wl2i(flu, min + 2i ~ 407)
#> [1] 3 4 5
## the first 3 data points wl2i(flu, min ~ min + 2i)
#> [1] 1 2 3
## from 490 nm to end of the spectrum wl2i(flu, 490 ~ max)
#> [1] 171 172 173 174 175 176 177 178 179 180 181
## the last 8 data points wl2i(flu, max - 7i ~ max)
#> [1] 174 175 176 177 178 179 180 181
## get 450 nm +- 3 data points wl2i(flu, 450 - 3i ~ 450 + 3i)
#> [1] 88 89 90 91 92 93 94
wl2i(flu, 300:400) ## all NA:
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA #> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA #> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA #> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA #> [101] NA
wl2i(flu, 600 ~ 700) ## NULL: completely outside flu's wavelength range
#> NULL
i2wl(faux_cell, 17:20)
#> [1] 666 670 674 678