Training projects are projects where you need to produce materials for others and/or to produce slides.

The function createTrainingProject() aims to facilitate your training projects by setting up a best practices template project.

Basic projects

A basic project that’s created with createBasicProject() is the fundamental building block for this type of project. Read more about basic projects to get insight into them.


At the moment, this facility will set up a basic project with some additional folders:

  • data
  • handouts
  • slides

Document packages

If you make a handouts/ or slides/ directory (both of which are created with the defaults), we will add rmarkdown to the project’s DESCRIPTION file.

You can specify an alternative package for your handouts via handoutEngine. At present, two additional package options are supported. The first is bookdown, and the second is tufte. If you select bookdown or tufte as the handoutEngine, the relevant package will be added to the DESCRIPTION file and the demo files for this handout format will be added to the handouts/ directory.

You can also specify an alternative package for your slides via slideEngine. The currently supported (most popular) package options are revealjs and xaringan. Note also that the default slideEngine option (rmarkdown) caters for a number of additional R Markdown presentation formats such as io_slides, slidy, and beamer since these formats do not have additional package dependencies (although in the case of beamer, you’ll need to have TeX installed). If you are using RStudio, you can find R Markdown templates for these presentation formats by going to File -> New File -> R Markdown -> Presentation.

If the packrat argument is not supplied or is set to TRUE, we will update the packrat manifest so that the packages are available when you open the project.

Make your own

You could either make a wrapper around createTrainingProject() to add additional setup steps, or you could make an alternative version of the function.

If you make your own, we’d be interested to hear about what you change/add and why. Please let us know on our GitHub Issues.