Building Tidy Tools Workshop - rstudio::conf 2020

Building Tidy Tools Workshop

9:00 AM-5:00 PM
2 Day Workshop

Hadley Wickham
Chief Scientist

Charlotte Wickham
Data Scientist, instructor at Oregon State University

Have you written a few of your own R functions? Are you ready to start sharing your code (or data) through R packages? Are you curious what you can do to make your first R packages easy for your users to use, and for you to maintain?

This is a two-day hands on workshop for those who have embraced the tidyverse and now want to expand it to meet their own needs. We'll discuss API design, functional programming tools, the basics of object design in S3, and the tidy eval system for NSE.

  • Learn efficient workflows for developing high-quality R functions, using the set of conventions codified by a package. You'll also learn workflows for unit testing, which helps ensure that your functions do exactly what you think they do.
  • Master the art of writing functions that do one thing well and can be fluently combined together to solve more complex problems. We'll cover common function writing pitfalls and how to avoid them.
  • Learn how to write collections of functions that work well together, and adhere to existing conventions so they're easy to pick up for newcomers.

You should take this workshop if you have experience programming in R and want to learn how to tackle larger scale problems. You'll get the most from it if you're already familiar with functions and are comfortable with R’s basic data structures (vectors, matrices, arrays, lists, and data frames). Note: There is ~30% overlap in the material with Hadley Wickham's previous "R Masterclass". However, the material has been substantially reorganised, so if you've taken the R Masterclass in the past, you'll still learn a lot in this class.

Looking forward to seeing you in San Francisco soon!

As you prepare, you can:

In particular, I'm copying below the information from the GitHub repo on the materials for the workshop and the setup should do before arriving.


Materials will be made available on github. If you are using an organization-issued laptop, you may want to verify before you arrive that you can access GitHub.

The materials will evolve as the workshop approaches, so if you want to pre-download the materials, please wait until the day before the workshop.


Please make sure you’ve installed the following packages:

install.packages(c("fs", "glue", "lobstr", "rematch2", "sloop", "vctrs"))
# You may also need:
install.packages(c("ggplot2", "dplyr", "stringr"))

# And get the package we'll work with later:
usethis::create_from_github("hadley/fordogs", fork = FALSE)

# if you see an error about "unsupported protocol", try this:
usethis::create_from_github("hadley/fordogs", fork = FALSE, protocol = "https")

Hi, some of us had a few errors when adding the data folder to the last example.

The error was:

checking data for ASCII and uncompressed saves ... WARNING
    Warning: package needs dependence on R (>= 2.10)

I managed to fix this by saving the data again with a different compression:

usethis::use_data(mtcars2, overwrite = TRUE, compress = "gzip")

I got this from reading section 17.2.6 of

The book also says we can fix this by "adding Depends: R (>= 2.10) in your DESCRIPTION ."

I was wondering which of these fixes is better?



R 2.10 is reaaaaaaally old, so updating the DESCRIPTION is a better solution, I think.

1 Like