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)
```

- x
`hyperSpec`

object.- wavelength
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.

`wl2i()`

returns a numeric vector containing the resulting indices.

`i2wl()`

returns a numeric vector with the wavelengths.

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:

```
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
```