Added the function Raman2df().

Note: There should be a possibility to supply (as an argument to
Raman2df()) a custom sampleid which should then override the regexp-
based algorithm (only if that argument was supplied).
master
Taha Ahmed 13 years ago
parent 3483065be8
commit 64774c079e

@ -0,0 +1,48 @@
# Renishaw.R
# Functions to read data from the Renishaw Raman spectrometer
# Taha Ahmed, Feb 2011
# CONTENTS
# >>>> Raman2df
##################################################
################### Raman2df #######################
##################################################
Raman2df <- function(datafilename) {
# Function description: for reading Raman spectrum into dataframe
#
datafile <- file(datafilename, "r")
chifile <- readLines(datafile, n = -1) #read all lines of input file
close(datafile)
#
#####
# A nice algorithm that extracts the filename from the datafilename argument
# and uses that as a sampleid in the returned dataframe
#####
rgxp.sampleid <- "[^/]*(?=\\.\\w*)" ## THIS REQUIRES perl=TRUE
# Regular expression that extracts the filename out of a full path.
# Matches and extracts everything from the last forward slash (assuming Unix slashes)
# up until a dot folllowed by an arbitrary number of alphanumeric characters.
sampleidmtch <- regexpr(rgxp.sampleid, datafilename, perl=TRUE)
# Check that there was a match
if (sampleidmtch < 0) {
# -1 means no match
sampleid <- datafilename
# If match was unsuccessful we use the argument as passed to this function as sampleid
}
sampleid <- substr(datafilename, sampleidmtch, (sampleidmtch + attr(sampleidmtch, "match.length") - 1))
#
ff <- data.frame(NULL)
zz <- textConnection(chifile, "r")
ff <- rbind(ff, data.frame(sampleid,
matrix(scan(zz, what = numeric(), sep = "\t"),
ncol = 2, byrow = T)))
close(zz)
names(ff) <- c("sampleid", "shift", "counts")
#
return(ff)
}
Loading…
Cancel
Save