Functions to bind hyperSpec objects.
cbind2() binds the spectral matrices of two hyperSpec
objects by column. All columns besides spc with the same name in x@data
and y@data must have the same elements. Rows are ordered before checking.
bind( direction = stop("direction('c' or 'r') required"), ..., wl.tolerance = hy.getOption("wl.tolerance") ) # S3 method for hyperSpec cbind(...) # S3 method for hyperSpec rbind(...) # S4 method for hyperSpec,hyperSpec cbind2(x, y) # S4 method for hyperSpec,missing cbind2(x, y) # S4 method for hyperSpec,hyperSpec rbind2(x, y, wl.tolerance = hy.getOption("wl.tolerance")) # S4 method for hyperSpec,missing rbind2(x, y, wl.tolerance)
| direction | "r" or "c" to bind rows or columns. |
|---|---|
| ... | The |
| wl.tolerance |
|
| x, y |
|
A hyperSpec object, possibly with different row order
(for bind("c", ...) and cbind2()).
The former difficulties with binding S4 objects are resolved since R version
3.2.0 and cbind() and rbind() now work as intended and expected for
hyperSpec objects.
Therefore, calling rbind.hyperSpec and cbind.hyperSpec is now deprecated:
cbind and rbind should now be called directly.
However, in consequence it is no longer possible to call cbind() or
rbind() with a list of hyperSpec objects. In that case, use bind() or
base::do.call() (see example).
bind() does the common work for both column- and row-wise binding.
You might have to make sure that the objects either all have or all do not have rownames and/or colnames.
methods::rbind2(), methods::cbind2(),
base::rbind(), base::cbind(),
merge() and collapse() for combining objects that do not share spectra
or wavelengths, respectively.
C. Beleites
faux_cell#> hyperSpec object #> 875 spectra #> 4 data columns #> 300 data points / spectrumbind("r", faux_cell, faux_cell)#> hyperSpec object #> 1750 spectra #> 4 data columns #> 300 data points / spectrum#> hyperSpec object #> 1750 spectra #> 4 data columns #> 300 data points / spectrum#> hyperSpec object #> 875 spectra #> 4 data columns #> 600 data points / spectrum#> hyperSpec object #> 2625 spectra #> 4 data columns #> 300 data points / spectrumx <- faux_cell[, , 600:605] x$a <- 1 x@data <- x@data[, sample(ncol(x), ncol(x))] # reorder columns y <- faux_cell[nrow(faux_cell):1, , 1730:1750] # reorder rows y$b <- 2 cbind2(x, y) # works#> hyperSpec object #> 875 spectra #> 6 data columns #> 27 data points / spectrum#> hyperSpec object #> 875 spectra #> 6 data columns #> 27 data points / spectrum#> hyperSpec object #> 12 spectra #> 3 data columns #> 181 data points / spectrumbind("r", lhy)#> hyperSpec object #> 12 spectra #> 3 data columns #> 181 data points / spectrum