Summary and Schedule

Chances are that you used R packages before, but did you know you can write your own? Moreover, did you know that this can be a brilliant idea? Packaging helps you creating a more robust, more reproducible, and more enjoyable scientific coding experience. And by contributing a package, you will add to the ever growing capabilities of the R language!

This workshop will provide you with the basics for writing your own packages in R.

R packages are first and foremost a standard way of structuring your work. You have a folder for code, a folder for tests, a folder for data, a folder for documents, and so on. The standardization makes packages easily installable and shareable.

Even if you are not planning to publish your package, structuring your work as one is also a very good idea. It enforces, in a relatively effortless manner, the implementation of software development best practices. This will lead to a safer and more robust working experience, and result in more accurate and reproducible work.

Syllabus

In this lesson you will find episodes on:

  • Installing packages
  • Setting up your first package
  • Testing code
  • Adding data to a package
  • Managing dependencies
  • Writing documentation and vignettes

Prerequisites

In order to follow this lesson you will need to:

  • be able to understand simple R code,
  • understand the concept of an R function.

In case you are not familiar with these topics, please follow one of our lessons about R.

For a refresher on R functions, head to this episode specifically.

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.

Required software

This lesson assumes you have reasonably up-to-date versions of the following software installed on your computer:

Required R packages

You will also need to install the following R packages:

  • devtools
  • rmarkdown
  • roxygen2

They can be installed by executing the code below in your R console:

R

install.packages(c("devtools", "rmarkdown", "roxygen2"))