Skip to contents

A Compendium of Bayesian Statistical Routines Written in C++

This is a compendium of C++ routines useful for Bayesian statistics. We steal other people’s C++ code, repurpose it, and export it so developers of R packages can use it in their C++ code. We actually don’t steal anything, or claim that Thomas Bayes did, but copy code that is compatible with our GPL 3 licence, fully acknowledging the authorship of the original code.

How to contribute

You are welcome to contribute to StealLikeBayes! How does this work?

Things to remember

  • We only accept code from packages and repositories with compatible licences. If you are contributing code from a package distributed under GPL 3 you’re good. Otherwise, you must argue the licence compatibility.
  • Fully acknowledge the source of the contributed code in the file with your code and documentation.
  • Once you contribute, we might reach out later for you to join the authors of a paper to be published on the basis of this package.
  • Provide one Bayesian statistical routine per submission.
  • Your submission must consist of:
    • one C++ file, src/*.cpp
    • the corresponding C++ header file, src/*.h
    • one R file with a wrapper for your main C++ function, R/*.R with full documentation and acknowledgement of the original code authorship,
    • one R file with tests of your function, inst/tinytest/test_*.R,
    • updates on your authorship in DESCRIPTION,
    • if required, updates on dependencies in DESCRIPTION and R/StealLikeBayes-package.R.

To-do list

Rcpp::compileAttributes()
devtools::document()
devtools::check()

How to use the package StealLikeBayes

Please, feel free to use it whatever way you feel like, ofc! We create it with two intended uses:

Use our C++ code in your R package

In order to use our C++ code in your R package you need to ensure you include all the dependencies to both: our package, and packages on which our functions rely on such as RcppArmadillo. The latter is on you!

To use C++ code from StealLikeBayes follow the steps:

arma::vec out = StealLikeBayes::rnorm1_precision_sampler(zeros<vec>(10), ones<vec>(10), -0.5);

Use our R code in your R package

That’s simple!

out = StealLikeBayes::rnorm1_precision_sampler(rep(0, 10), rep(1, 10), -0.5)

Installation

The first time you install the package

You must have a cpp compiler. Follow the instructions from Section 1.3. by Eddelbuettel & François (2023). In short, for Windows: install RTools, for macOS: install Xcode Command Line Tools, and for Linux: install the standard development packages.

Once that’s done:

You can install the StealLikeBayes package by running:

install_packages("StealLikeBayes")

You can install the developer’s version of StealLikeBayes from its GitHub repository by running:

devtools::install_github("bsvars/StealLikeBayes")

The origin story

The work on this package was initiated during the 2025 NUMBAT Hackathon. Then, Adam and Longcan from the University of Melbourne, and Shelly, Filip, and Kenyon from Monash University joined Tomasz to work together on the StealLikeBayes package version 1.0. We thank Monash NUMBATs and Monash EBS for organising the event and providing resources that enabled collaborative development.