Chapter 5. Data Structures

You can get pretty far in R just using vectors. That’s what Chapter 2 is all about. This chapter moves beyond vectors to recipes for matrices, lists, factors, data frames, and tibbles (which are a special kind of data frame). If you have preconceptions about data structures, we suggest you put them aside. R does data structures differently than many other languages. Before we get to the recipes in this chapter, we’ll take a quick look at different data structures in R.

If you want to study the technical aspects of R’s data structures, we suggest reading R in a Nutshell and the R Language Definition. The notes here are more informal. These are things we wish we’d known when we started using R.


Here are some key properties of vectors:

Vectors are homogeneou.s

All elements of a vector must have the same type or, in R terminology, the same mode.

Vectors can be indexed by position.

So v[2] refers to the second element of v.

Vectors can be indexed by multiple positions, returning a subvector.

So v[c(2,3)] is a subvector of v that consists of the second and third elements.

Vector elements can have names.

Vectors have a names property, the same length as the vector itself, that gives names to the elements:

v <- c(10, 20, 30)
names(v) <- c("Moe", "Larry", "Curly")
#>   Moe Larry Curly
#>    10    20    30
If vector elements have names, then you can select them by name.

Continuing the previous example:

#> [1] 20


Here are ...

Get R Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.