Convert between 'pavo::rspec' objects containing spectral reflectance data into spectral objects (xxxx_spct, xxxx_mspct) as defined in package 'photobiology'.
Usage
rspec2mspct(
x,
member.class = "reflector_spct",
spct.data.var = "Rpc",
multiplier = 1,
...
)
rspec2spct(x, multiplier = 1, ...)
Arguments
- x
rspec object
- member.class
character One of the spectrum classes defined in package 'photobiology'.
- spct.data.var
character The name to be used for the 'spc' data when constructing the spectral objects.
- multiplier
numeric A multiplier to be applied to the 'rspc' data to do unit or scale conversion.
- ...
currently ignored.
Note
Objects of class pavo::rspec
do not contain metadata or class
data from which the quantity measured and the units of expression could be
obtained. When using this function the user needs to use parameter
multiplier
to convert the data to what is expected by the object
constructors defined in package 'photobiology' and use parameter
spct.data.var
to select the quantity.
pavo::rspec
objects may use memory more efficiently than spectral
objects of the classes for collections of spectra defined in package
'photobiology' as wavelengths are assumed to be the same for all member
spectra, and stored only once while this assumption is not made for
collections of spectra, allowing different wavelengths and lengths for the
component spectra. Wavelengths are stored for each spectrum, but as
spectral classes are derived from 'tbl_df' in many cases no redundant
copies of wavelength data will be made in memory in spite of the more
flexible semantics of the objects.
Warning!
Always check the sanity of the imported or exported data values, as guessing is needed when matching the different classes, and the functions defined here are NOT guaranteed to return valid data wihtout help from the user through optional function arguments.
Examples
# example run only if 'pavo' is available
if (requireNamespace("pavo", quietly = TRUE)) {
library(pavo)
data(sicalis, package = "pavo")
sicalis.mspct <- rspec2mspct(sicalis)
class(sicalis.mspct)
data(teal, package = "pavo")
teal.spct <- rspec2spct(teal)
class(teal.spct)
levels(teal.spct[["spct.idx"]])
angles <- seq(from = 15, to = 75, by = 5) # from teal's documentation
teal.spct[["angle"]] <- angles[as.numeric(teal.spct[["spct.idx"]])]
teal.spct
}
#> Object: reflector_spct [4,812 x 4]
#> containing 12 spectra in long form
#> Wavelength range 300-700 nm, step 1 nm
#> Variables:
#> w.length: Wavelength [nm]
#> Rfr: Total spectral reflectance [/1]
#> --
#> # A tibble: 4,812 × 4
#> w.length Rfr spct.idx angle
#> <int> <dbl> <fct> <dbl>
#> 1 300 0.223 Acrecca-01 15
#> 2 301 0.222 Acrecca-01 15
#> 3 302 0.210 Acrecca-01 15
#> 4 303 0.216 Acrecca-01 15
#> 5 304 0.213 Acrecca-01 15
#> 6 305 0.218 Acrecca-01 15
#> 7 306 0.201 Acrecca-01 15
#> 8 307 0.222 Acrecca-01 15
#> 9 308 0.212 Acrecca-01 15
#> 10 309 0.215 Acrecca-01 15
#> # ℹ 4,802 more rows