README.md

jamba

The goal of jamba is to provide useful custom functions for R data analysis and visualization.

Package Reference

A full online function reference is available via the pkgdown documentation:

Full jamba command reference

Functions are categorized, some examples are listed below:

Background

The R functions in jamba have been built up over several years, often based upon and citing the relevant discussion from Stackoverflow, R-help, or Bioconductor, along with the principal author(s). Almost every function is some sort of wrapper around existing R functions – designed for specific cases where I can make it faster, more flexible, or customized to make my analysis life easier. Kudos and thanks to the original authors! The R community is built upon the collective greatness of its contributors!

Most of the functions are designed around workflows for Bioinformatics analyses, where functions need to be efficient when operating over 10,000 to 100,000 elements. (They work really well with millions as well.) Usually the speed gains are obvious with about 100 elements, then scale linearly (or worse) as the number increases. I and others use these functions all the time.

One example function writeOpenxlsx() is a simple wrapper around very useful openxlsx::write.xlsx(). Also writeOpenxlsx() applies column formatting for things like P-values, fold changes, log2 fold changes, numeric and integer values – and uses color-shading of cells for each type. So many hours saved from hand-editing Excel formats!

Small and large efficiencies are used wherever possible. For example it is faster to operate on unique entries from a 100,000 element list, than it is to perform a function on the full list. In most cases, I have tested numerous available R methods and packages, and settled on the fastest* available at the time. If there is something faster or better, I would love for you to let me/us know!

The functions in jamba are intended to be convenient wrappers around whatever series of steps it takes to get the job done. My design goal is to “make my own analysis jobs easier” as first priority.

Lastly, jamba should motivate me and others to create R packages instead of a random collection of R functions in *.R files.

Example R functions

Efficient alphanumeric sort

Example:

| | miRNA | sort\_rank | mixedSort\_rank | | :- | :------ | ---------: | --------------: | | 2 | ABCA2 | 2 | 1 | | 1 | ABCA12 | 1 | 2 | | 3 | miR-1 | 3 | 3 | | 6 | miR-1a | 6 | 4 | | 7 | miR-1b | 7 | 5 | | 8 | miR-2 | 8 | 6 | | 4 | miR-12 | 4 | 7 | | 9 | miR-22 | 9 | 8 | | 5 | miR-122 | 5 | 9 |

Base R plotting

These functions help with base R plots, in all those little cases when the amazing ggplot2 package is not a smooth fit.

Excel export

Every Bioinformatician/statistician needs to write data to Excel, the writeOpenxlsx() function is consistent and makes it look pretty. You can save numerous worksheets in a single Excel file, without having to go back and custom-format everything.

Color

Everything I do uses color to the utmost limit, especially on R console, and in every R plot.

List

Cool methods to operate on super-long lists in one call, to avoid looping through the list either with for() loops, lapply() or map() functions.

Names

We use R names as an additional method to make sure everything is kept in the proper order. Many R functions return results using input names, so it helps to have a really solid naming strategy. For the R functions that remove names – I highly recommend adding them back yourself!

data.frame/matrix/tibble

String / grep

Numeric

Practical / helpful

jargs(plotSmoothScatter)
#>                 x = ,
#>                 y = NULL,
#>        bandwidthN = 300,
#>    transformation = function( x ) x^0.25,
#>              xlim = NULL,
#>              ylim = NULL,
#>              nbin = 256,
#>          nrpoints = 0,
#>           colramp = c("white", "lightblue", "blue", "orange", "orangered2"),
#>            doTest = FALSE,
#>    fillBackground = TRUE,
#>          naAction = c("remove", "floor0", "floor1"),
#>              xaxt = "s",
#>              yaxt = "s",
#>               add = FALSE,
#> applyRangeCeiling = TRUE,
#>         useRaster = TRUE,
#>           verbose = FALSE,
#>               ... =

R console

Other related Jam packages



jmw86069/jamba documentation built on June 12, 2024, 10:28 a.m.