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

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.

Value

  • wl2i() returns a numeric vector containing the resulting indices.

  • i2wl() returns a numeric vector 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