Mercurial > repos > guerler > chartskit
view chartskit.r @ 1:b4722f9d496f draft
Uploaded
author | guerler |
---|---|
date | Mon, 31 Mar 2014 17:22:09 -0400 |
parents | |
children | 4aeb334de0e3 |
line wrap: on
line source
#!/usr/bin/Rscript # convert multi parameter string (i.e. key1: value, key2: value, ...) to object split <- function(argument){ # process parameter string options <- list() list <- gsub("\\s","", argument) list <- strsplit(list, ",") if (length(list) > 0) { list <- list[[1]] for (entry in list) { pair <- strsplit(entry, ":") if (length(pair) > 0) { pair <- pair[[1]] if (length(pair) == 2) { options[[pair[1]]] <- pair[2] } } } } return(options) } # load package if('getopt' %in% rownames(installed.packages()) == FALSE) { install.packages('getopt', repos='http://cran.us.r-project.org') } library(getopt); # get options, using the spec as defined by the enclosed list. spec = matrix(c( 'module', 'm', 1, 'character', 'Module name', 'input', 'i', 1, 'character', 'Input tabular file', 'columns', 'c', 1, 'character', 'Columns string', 'settings', 's', 1, 'character', 'Settings string', 'output', 'o', 1, 'character', 'Output tabular file', 'help', 'h', 0, '', 'Help', 'verbose', 'v', 0, '', 'Verbose' ), byrow=TRUE, ncol=5); opt = getopt(spec); # show help if ( !is.null(opt$help) || is.null(opt$module) || is.null(opt$input) || is.null(opt$columns) || is.null(opt$output)) { cat(getopt(spec, usage=TRUE)); q(status=1); } # read columns/settings columns = split(opt$columns) settings = split(opt$settings) # read table table <- read.table(opt$input) # source module source(opt$module) # run module l = wrapper (table, columns, settings) # fill gaps if (length(l) > 0) { n <- max(sapply(l, length)) ll <- lapply(l, function(X) { c(as.character(X), rep("", times = n - length(X))) }) out <- do.call(cbind, ll) # print details if (!is.null(opt$verbose)) { print ('Columns:') print (columns) print ('Settings:') print (settings) print ('Result:') print (out) } # write table write.table(out, file=opt$output, row.names=FALSE, col.names = FALSE, quote=FALSE, sep='\t') } else { print ('Columns:') print (columns) print ('Settings:') print (settings) print ('No output generated.') }