Some quibbles about “The R Book” by Michael Crawley

December 13, 2010

A friend recently bought The R Book and I said I would tell him of problems that I’ve noticed with it.  You can eavesdrop.

Page 4

The word “library” is used instead of “package”.  This (common)  error substantially raises the blood pressure of some people — probably to an unwarranted extent.

An R package is a group of functions, data and their documentation.  These are the things that are in repositories like CRAN (where there are over two thousand packages).  A package is installed onto your machine into a library.

You are unlikely to call a book a library; don’t call a package a library.

Part of the problem is that packages are attached with the library function:

> library(fortunes)

That is why some instructions have you do the same thing via:

> require(fortunes)

Some of the people whose blood pressure is abnormally raised by seeing this mistake are very important to R, so please get this right.

Page 11

An example value is:

3.9+4.5i

that is, a complex number.  This is in the chapter called “Essentials of the R Language”.  I’ve been using R and a language not unlike R for a quarter century.  The only time I recall using complex numbers is when documenting them.  Complex numbers don’t match my definition of “essential”.

There is a certain amount of irony for a 600-word blog post to take n lines to complain about a 900-page book wasting one line.  However, the complex number is an extreme example of a common occurrence in the chapter.  There is a lot of the chapter that I don’t find particularly essential.

My take on “essential” is Some hints for the R beginner.

Page 16:

A<-1:10
B<-c(2,4,8)

These are two examples of a general feature: while the author’s keyboard seems to work perfectly fine for text, the space-bar is mysteriously broken for R code.

It is clearer to write these as:

> A <- 1:10
> B <- c(2, 4, 8)

The assignment arrow shows up as a separate entity.  Spacesaidunderstanding.

Page 21

The same thing, but this time it’s serious.

x<5

really, really should have spaces around the less-than operator.

There is no trouble with this particular example, but what if the example were with minus five?

x<-5

does not give you a logical vector with TRUE values when x is less than minus five.  It changes x to have the single value 5.

This and a whole bunch of other  R gotchas are in The R Inferno.

Page 107

The values in the body of a matrix can only be numbers.

That is a false statement.  In particular, if x is a numeric matrix, then the result of

x < -5

is a matrix of logical values (and is the same dimension as x).

Pages 323-324

This be praise, not quibble.

The book uses “explanatory variables” and “response” in the statistical regression context.  It doesn’t enter into the dependent-independent muddle.

Other views

Amazon has several reviews of The R Book. There is a range of opinions from very positive to quite negative.  A common complaint is that the material is disorganized.

Questions

The points I have raised are from a quick glance through the book.  Are there other things in the book that should be pointed out to help the unwary?

Epilogue

I don’t think there is such a thing as the best book on R.  There can be the best book on R for you as an individual.  Which one is the best will depend on where you are and where you want to go.  A partial list of your choices is Books related to R.

Subscribe to the Portfolio Probe blog by Email

Leave a Reply

  1. Kenn 2010-12-14 at 08:53 - Reply

    I only read the part about libraries and packages so far and I’d’ve never thought this could be a problem.

    Maybe the only real problem here is that many people don’t make appropriate difference between concepts (“package”) and functions (`library`, `require`). But the sentence “A package is installed onto your machine into a library” introduces a sophisti-bloody-cated difference that makes no difference for an ordinary user, although it might have a theoretical importance to the CS theorists. Moreover, it is not clear. Are you saying that an installed package becomes a library? Then an ordinary user should never complain about packages because all he sees is the installed version on his machine. They should complain about libraries. Or is it that a package is installed into a folder called “library”? Yes it is but so what? Does this mean that we should call an installed package a “library”? By this logic, the working horse of R should be called a “bin”!

  2. Pat 2010-12-14 at 09:57 - Reply

    Kenn,

    Thanks for the comment. I agree that for a typical user the issue of package versus library is very trivial.

    However, I think it is not so trivial when a supposedly authoritative book makes the mistake. Partly because it is a red flag that there might be other mistakes in the book — a couple of which I spotted.

  3. Kenn 2010-12-14 at 13:16 - Reply

    Pat,

    I agree that it should be correct in the book. But your explanation about what a library is was a bit confusing — one could understand that an installed version of a package becomes a library (but it could be my poor English:). I checked the R documentation and it actually says that “library” is intended to mean …

    “directories in the file system containing a subdirectory for each package installed there.”

    So in a typical case there would be just one library (corresponding to the folder called “library”), regardless of how many packages are installed. And having more than two or three libraries would usually not make sense.

Related posts