save
and load
, two
principal ways to import and export data into hyperSpec
objects
exist.The data can be exchanged via ASCII files, and the Functions to import and export hyperSpec objects as ASCII files.
A second option is using the package R.matlab
which provides the functions readMat
and
writeMat
.
read.txt.long (file = stop ("filename is required"),
cols = list (wavelength = expression (lambda / nm), spc = "I / a.u."),
header = TRUE, ...)read.txt.wide (file = stop ("filename is required"),
cols = list (spc = "I / a.u.", .wavelength = expression (lambda / nm)),
check.names = FALSE,
...)
write.txt.long (object, file = stop("filename required"),
order = c(".rownames", "wavelength"),
na.last = TRUE, decreasing = FALSE, quote = FALSE, sep = "",
row.names = FALSE, cols = NULL, col.names = TRUE,
col.labels = FALSE, append = FALSE, ...)
write.txt.wide (object, file = stop ("filename required"), cols = NULL,
quote = FALSE, sep = "", row.names = FALSE, col.names = TRUE,
header.lines = 1, col.labels = if (header.lines == 1) FALSE else TRUE,
append = FALSE, ...)
- file
{filename}
- cols
{the column names specifying the column order.
For data import, a list with elements colname = label
;
for export a character vector with the colnames.
Use wavelength
to specify the wavelengths.}
- header
{the file has (shall have) a header line}
- ...
{arguments handed to read.table
and write.table
,
respectively.}
- check.names
{handed to read.table
. Make sure this is FALSE
,
if the column names of the spectr ar ethe wavelength values.}
- object
{the hyperSpec
object}
- order
{which columns should be order
ed? order
is used as index vector
into a data.frame
with columns given by cols
.}
- na.last
{handed to order
by write.txt.long
. }
- decreasing
{logical vector giving the sort order}
- quote, sep, row.names, col.names
{have their usual meaning (see
read.table
and write.table
), but different default values.}
- col.labels
{Should the column labels be used rather than the colnames?}
- append
{Should the output be appended to an existing file?}
- header.lines
{Toggle one or two line header (wavelengths in the second header line) for write.txt.wide
}
These functions are very flexible and provide lots of arguments.
If you use them to read or write manufacturer specific ASCII formats, please consider writing a
wrapper function and contributing this function to hyperSpec .
An example is in the flu vignette (see vignette ("flu", package = "hyperSpec"
).
For further information, see the
examples below and the documentation of
R.matlab
.
read.table
and write.table
R.matlab
for .mat files
read.ENVI
for ENVI data
Manufacturer specific file formats: scan.txt.Renishaw
[object Object]
## export & import matlab files
if (require (R.matlab)){
# export to matlab file
writeMat ("test.mat", x = flu[[]], wavelength = flu@wavelength,
label = lapply (flu@label, as.character))
# reading a matlab file
data <- readMat ("test.mat")
print (data)
mat <- new ("hyperSpec", spc = data$x,
wavelength = as.numeric(data$wavelength),
label = data$label[,,1])
}
## ascii export & import
write.txt.long (flu, file = "flu.txt", cols = c("wavelength", "spc", "c"),
order = c("c", "wavelength"),
decreasing = c(FALSE, TRUE))
read.txt.long (file = "flu.txt", cols = list (wavelength = expression (lambda / nm),
spc= "I / a.u", c = expression ("/" (c, (mg/l)))))
write.txt.wide (flu, file = "flu.txt", cols = c("c", "spc"),
col.labels = TRUE, header.lines = 2, row.names = TRUE)
write.txt.wide (flu, file = "flu.txt", col.labels = FALSE, row.names = FALSE)
read.txt.wide (file = "flu.txt",
cols = list (c=expression ("/"("c", "mg/l")), spc="I / a.u", .wavelength = "lambda / nm"),
header = TRUE)
IO
file