Skip to Content
R in a Nutshell, 2nd Edition
book

R in a Nutshell, 2nd Edition

by Joseph Adler
October 2012
Beginner to intermediate
721 pages
21h 38m
English
O'Reilly Media, Inc.
Content preview from R in a Nutshell, 2nd Edition

Objects Are Copied in Assignment Statements

In assignment statements, most objects are immutable. Immutable objects are a good thing: for multithreaded programs, immutable objects help prevent errors. R will copy the object, not just the reference to the object. For example:

> u <- list(1)
> v <- u
> u[[1]] <- "hat"
> u
[[1]]
[1] "hat"

> v
[[1]]
[1] 1

This applies to vectors, lists, and most other primitive objects in R.

This is also true in function calls. Consider the following function, which takes two arguments: a vector x and an index i. The function sets the ith element of x to 4 and does nothing else:

> f <- function(x,i) {x[i] = 4}

Suppose that we define a vector w and call f with x = w and i = 1:

> w <- c(10, 11, 12, 13)
> f(w,1)

The vector w is copied when it is passed to the function, so it is not modified by the function:

> w
[1] 10 11 12 13

The value x is modified inside the context of the function. Technically, the R interpreter copies the object assigned to w and then assigns the symbol x to point at the copy. We will talk about how you can actually create mutable objects, or pass references to objects, when we talk about environments.

Note

Although R will behave as if every assignment makes a new copy of an object, in many cases R will actually modify the object in place. For example, consider the following code fragment:

> v <- 1:100
> v[50] <- 27

R does not actually copy the vector when the 50th element is altered; instead, R modifies the vector in place. Semantically, this ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

R in a Nutshell

R in a Nutshell

Joseph Adler
The R Book, 2nd Edition

The R Book, 2nd Edition

Michael J. Crawley
The R Book

The R Book

Michael J. Crawley
R Packages

R Packages

Hadley Wickham

Publisher Resources

ISBN: 9781449358204Errata Page