Training

Take this course

Schedule an on-site training at your location, or suggest a public workshop.

Schedule on-site training Suggest a public workshop

Overview

Learn to write better R code by using the advanced features of the R programming language. Based on the programming experience of Hadley Wickham (author of over 30 R packages) and the RStudio team, this course will teach you how to use R to solve harder problems with fewer lines of code.

Main concepts:

  • Become a skilled R programmer who knows the best ways to craft R functions and to use R’s object oriented programming (OOP) features
  • Learn advanced R techniques to compute on the language, control object evaluation within R functions, and apply R’s scoping rules
  • Write correct, fast, and maintainable R code built around the mantra, “Don’t repeat yourself!”

What will you learn?

How to write R programs like an expert. Through a series of demonstrations and hands on exercises, you will learn about advanced R features to write fast and maintainable code.

Controlling evaluations - Unlike most languages, R provides powerful tools for controlling when and where evaluation occurs. This lets you create functions tailored for interactive use that minimize typing with a little magic.

  • Mastering base functions such as with, subset and transform
  • Capture user input without evaluating it
  • Control when and where R evaluates expressions and calls
  • R’s rules for dynamic and lexical scoping
  • Writing code that modifies code

First class functions - At heart, R is a functional programming language, and functions can be used in many more ways than most R users assume. R has first class functions which means you can write functions that return functions, take functions as input, and save function in lists. This gives you a powerful set of tools for dealing with a broad class of problems.

  • Create anonymous functions
  • Write closures – functions that return functions
  • Build higher-order functions – functions that take other functions as input
  • Work with lists of functions

Object oriented programming - Though a functional language, R contains three systems of object oriented programming (OOP) features. These features revolve around the concepts of classes and methods and can dramatically simplify code. We’ll focus on S3, the oldest and simplest form of OOP, but will also touch on S4 and R5 (reference classes).

  • How to interpret base R functions that use OOP techniques
  • The details of S3 generic functions, methods, and classes
  • The differences between R’s three OOP classes: S3, S4, and R5

Best practices in R - Even advanced techniques can be ruined by poor planning. When you use advanced techniques, you must be especially careful to make your code clear and lucid. Throughout this course you’ll learn practical coding tips and techniques.

  • Create correct, maintainable, and fast R code
  • Create understandable code that communicates
  • Organize R programs around the “DRY” principle – “Don’t repeat yourself!”

Who should take this course?

This class will be a good fit for you if you have some experience programming in R already. You should have written a number of functions, and be comfortable with R’s basic data structures (vectors, matrices, arrays, lists, and data frames). You will find the course particularly useful if you’re an experienced R user looking to take the next step, or if you’re moving to R from other programming languages and you want to quickly get up to speed with R’s unique features.

If this doesn’t sound like you, consider taking our Intro to data science with R course.

What's included?

All participants who register for Advanced R programming will receive lifetime access to all the slides, exercises, data sets, and R scripts used in the course.

What should I bring?

You need your laptop and the latest version of R. Obviously we recommend the RStudio IDE, but it's not required: bring the R environment that makes you the most productive.

Take this course

Schedule an on-site training at your location, or suggest a public workshop.

Schedule on-site training Suggest a public workshop