Abstract

This second edition of an already well-apprised book is a solid addition to any student’s (or academic’s) shelf. The book is concerned with modern techniques, using the R programming language to conduct spatial analysis. It details a variety of exploratory statistical analysis methods, as well as more classic geographic information systems functionality using cutting-edge packages in R. The book is a solid first choice for the foundation of an undergraduate or early postgraduate course in R for geographical analysis, given its depth of focus and useful pedagogical features. As with any piece of academic work, it stands to be improved in a few small ways, especially to facilitate use as enrichment material for already-established courses. This Introduction to R is surely one of the strongest offerings in a very diverse field and I will discuss here its relative strengths and areas for improvement throughout.
As implied by the title, this book leads with instruction in R (the programming language itself) and is split neatly into two parts. The first entails instruction on how to program in R and use the RStudio integrated development environment (IDE), and the second is a straightforward introduction to spatial statistics and geographic information systems. The first four chapters provide a very clear and commendable introduction to R the programming language. In this, it fits into a growing list of introductions to R, each with their own interpretation of how “introductory” an introduction ought to be and how much (or how little) of R to introduce. In this wide and deep sea of introductions to R, Brunsdon and Comber’s Introduction floats to the top. Their broader perspective on R as a diverse collection of inter-linked tools and packages sets them apart from many other introductory textbooks that focus exclusively on the “tidyverse” (a collection of software packages with a consistent and self-reinforcing design). In this, the book is not exclusive. It provides a useful overview of methods both within and outside of “tidy” packages. As the book goes on, it gradually tilts more towards "tidy" tools, but this is also the current direction of the R geographic analysis ecosystem. As such, this book provides a thorough overview of R for geographic analysis but also serves to introduce students to the cutting edge of the R ecosystem.
In the second part of the book (Chapters 5 to 10), spatial statistics and analysis become the focus, although spatial concepts slip into the discussion of data structures within the first half, too. The book covers spatial analytical techniques in the typical canon of spatial analysis, including spatial autocorrelation analysis, spatial joins, spatial predicates ad GIS operations, as well as publication-quality mapping for various kinds of data. Altogether, this provides wide exposure to many different concepts common in geographical science. Here again, the pedagogical material shines: reading comprehension questions at the end of each chapter are excellent and make it easy to check understanding and progress. Overall, the book is exceptionally useful for its intended purpose. It provides an introduction to a wide and variegated ecosystem of software, each with their own underlying conceptual frameworks and collections of empirical commitments. It runs the full gamut of common quantitative geographical applications.
If this well roundedness has any drawback, it is that it makes individual chapters or sections difficult to follow for learners seeking a one-off discussion of specific topics. From firsthand experience, students may find it challenging to dip into any one of these sections as a reference when aiming to complement or solidify an existing familiarity with R. The book truly is an introduction, in the sense that it offers exposure to a wider variety of topics and techniques than other elementary textbooks on R; it is not a reference, and should not serve as one. As such, it is more useful in total rather than in part. Second, especially in the second half, this completeness is intensified by the fact that example code blocks become longer and more complex. Generally, this also increases the space between a concept’s explanation and its execution in R code. Where in-line comments that explain lines of text are common in scientific computing textbooks, these are not present in the latter chapters. Students cannot skip chapters on mapping when learning statistics, since statistical results are nearly always easier to understand when visualized. But, unfortunately, some students may have difficulty understanding where the statistics code ends and the mapping code begins. This is neither a unique challenge for this book, nor for R: it is a very general issue affecting many scientific computing textbooks. It presents unique difficulties for students using Brunsdon and Comber’s Introduction since the code to create publication-quality maps using R is occasionally verbose while statistical code is nearly always very direct in R.
Overall, the authors provide a very stable base for teaching geographical analysis in R, and anyone looking for an entryway into geographical analysis will benefit from this book. On the other hand, this Introduction is a foundation, not a flourish, for a reading list. It can be challenging for students to use chapters from the book in isolation without studiously engaging with previous chapters. This is not to say that it becomes too advanced, but rather that the chapters build tightly and solidly upon one another. This could be mitigated by instructors who might supplement the book’s code with comments in the more advanced chapters, or by the authors themselves in the comprehensive online resources and code: https://bookdown.org/lexcomber/brunsdoncomber2e Minor issues aside, the pedagogical materials are exceptionally useful, and will certainly be worth the investment of time, effort, and money for students and scholars alike. Brunsdon and Comber’s Introduction to R for Spatial Analysis and Mapping stands out as one of the best and most current foundations for spatial analysis with R for teaching and instruction.
