Official Blog
r programming

New Course: Object-Oriented Programming in R: S3 and R6

Try out our newest course, Object-Oriented Programming in R: S3 and R6!

Our newest course, Object-Oriented Programming in R: S3 and R6 taught by Richie Cotton is now available! Object-oriented programming (OOP) lets you specify relationships between functions and the objects that they can act on, helping you manage complexity in your code. This is an intermediate level course, providing an introduction to OOP, using the S3 and R6 systems. S3 is a great day-to-day R programming tool that simplifies some of the functions that you write. R6 is especially useful for industry-specific analyses, working with web APIs, and building GUIs. The course concludes with an interview with Winston Chang, creator of the R6 package. What are you waiting for?


Start For Free


Object-Oriented Programming in R: S3 and R6 features 56 interactive exercises that combine high-quality video, in-browser coding, and gamification for an engaging learning experience that will get you on your way to becoming an Object-oriented programming (OOP) master!

What you'll learn

In the first chapter, you'll learn what object-oriented programming (OOP) consists of, when to use it, and what OOP systems are available in R. You'll also learn how R identifies different types of variable, using classes, types, and modes.

[Start First Chapter For Free]

Next, Richie explains how to use S3, and how generics and methods work. S3 is a very simple object-oriented system that lets you define different behavior for functions, depending upon their input argument.

In the third chapter, you'll learn how to define R6 classes, and to create R6 objects. You'll also learn about the structure of R6 classes, and how to separate the user interface from the implementation details.

Next, you'll learn how to inherit from an R6 class, and how the relationship between parent and child classes works.

Finally, you'll complete your mastery of R6 by learning about advanced topics such as copying by reference, shared fields, cloning objects, and finalizing objects. 

Start For Free