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)
hyperSpec
object.
wavelengths to be converted into column indices, either numeric or a formula, see details.
if multiple wavelength ranges are given, should the indices be unlisted or kept in a list?
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