# Awesome R package development

A curated list of awesome tools to assist 📦 development in R programming language.

What is included?
• Only tools helpful for package development are included, and not other resources (e.g. books).
• All relevant tools are included, irrespective of their availability on CRAN.
• Tools which are part of publicly archived/retired GitHub repositories are not included.

If you wish to suggest any additional tools, please make a PR or create an issue here.

# Contributing

Please note that the awesome-r-pkgtools project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Note

If you are not using the latest release of pandoc, please change only the README.qmd document to avoid possibly large irrelevant diffs.

# Swiss army knives 🛠

Tools useful across all stages of package development (some of these are meta-packages and their component packages are also included in respective sections for the sake of completeness), irrespective of whether package is meant to be submitted to CRAN or to Bioconductor.

# Documentation 📚

## Math rendering in the manual

• {katex} (to convert latex math expressions to HTML for use in package manual pages)

• {mathjaxr} (provides ‘MathJax’ and macros to enable its use within Rd files for rendering equations in the HTML help files)

# Code analysis 🗂⏱

## Code similarity

• {dupree} (identifies code blocks that have a high level of similarity within a set of R files)

• {rscc} (provides source code similarity evaluation by variable/function names)

• {SimilaR} (quantifies the similarity of the code-base of R functions by means of program dependence graphs)

## Lines of code

• {cloc} (counts blank lines, comment lines, and physical lines of source code in source files)

# CI/CD 📟

CI/CD: continuous integration and either continuous delivery or continuous deployment

# Debugging 🔭

• {debugme} (provides helpers to specify debug messages as special string constants, and control debugging of packages via environment variables)

• {debugr} (tools to print out the value of R objects/expressions while running an R script)

• {winch} (provides stack traces for call chains that cross between R and C/C++ function calls)

• {flow} (to visualize as flow diagrams the logic of functions, expressions, or scripts, which can ease debugging)

# Gratitude 🙏💌

To thank the contributors or maintainers of packages you rely on.