##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (initsection)
{
assignments <- grep("^\w+\s*=", initsection, perl = T)
argstoprocess <- vector("character", length(assignments))
for (i in 1:length(assignments)) {
argstoprocess[i] = initsection[assignments[i]]
filepos = assignments[i] + 1
while (length(grep(";\s*$", argstoprocess[i], perl = T)) !=
1) {
argstoprocess[i] = paste(argstoprocess[i], initsection[filepos])
filepos = filepos + 1
}
}
arglist <- strsplit(argstoprocess, "\s*=\s*", perl = T)
names(arglist) <- make.names(sapply(arglist, "[", 1))
arglist <- as.list(sapply(arglist, "[", -1))
argvals <- as.character(sapply(arglist, "[", 1))
argvals <- sub(";\s*$", "", argvals, perl = T)
for (i in 1:length(argvals)) {
if (length(grep("^c\(", argvals[i])) == 1 && length(grep("\)$",
argvals[i])) == 1) {
arglist[[i]] <- eval(parse(text = argvals[i]))
}
else arglist[[i]] <- argvals[i]
}
if (is.null(arglist$iterate_wrt)) {
warning("No iterators in init section.")
}
arglist$iterators <- unlist(strsplit(as.character(arglist$iterate_wrt),
"\s*,\s*", perl = T))
for (i in 1:length(arglist$iterators)) {
seqText <- eval(parse(text = paste("mysplit$", arglist$iterators[i],
sep = "")))
if (is.null(seqText)) {
stop("Iterator specified: ", arglist$iterators[i],
", but not found")
}
arglist[[arglist$iterators[i]]] <- eval(parse(text = seqText))
}
if (is.null(arglist$outputDirectory)) {
arglist$outputDirectory <- getwd()
}
arglist
}
Run the code above in your browser using DataLab