## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Introduction

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, and data frames. If you have preconceptions about data structures, I suggest you put them aside. R does data structures differently.

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

## Vectors

Here are some key properties of vectors:

Vectors are homogeneous

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")`
> `print(v)`
Moe Larry Curly
10    20    30```
If vector elements have names then you can select them by name

Continuing the previous example:

```> `v["Larry"]`
Larry
20```

## Lists

Lists are heterogeneous

Lists can contain elements of different types; in R terminology, list elements may have different modes. Lists can even contain other structured objects, such as lists and data frames; this ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required