import {hyperSpec}R Documentation

Import and Export of hyperSpec objects

Description

Besides 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.

Usage

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 = "\t", 
   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 = "\t", row.names = FALSE, col.names = TRUE,
   header.lines = 1, col.labels = if (header.lines == 1) FALSE else TRUE, 
   append = FALSE, ...)

Arguments

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 ordered? 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

Details

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.

Author(s)

C. Beleites

See Also

read.table and write.table

R.matlab for .mat files

read.ENVI for ENVI data

Manufacturer specific file formats: scan.txt.Renishaw

Examples

## 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)

[Package hyperSpec version 0.95 Index]