install.packages("tinytex")
tinytex::install_tinytex()Statistical Computing in R
1 Online R learning resources
There are an overwhelming number of great resources for learning R; here are some recommendations:
- The RStudio Education website, especially:
- UCD-SERG Lab Manual
- R for Epidemiology (Cannell and Livingston (2024))
- The Epidemiologist R Handbook (Batra (2024))
- Practical R for Epidemiologists (Myatt (2022))
- R for Data Science (Wickham et al. (2023))
- Advanced R (Wickham (2019))
- R Graphics Cookbook (Chang (2024))
- R Packages (Wickham and Bryan (2023))
- Nahhas (2023) (same author as Nahhas (2024))
- Myatt (2022)
- Aragon (2017) (previously Aragon (2013)): Author is State Public Health Officer and Director, California Department of Public Health, https://drtomasaragon.github.io/)
- SAS and R (Kleinman and Horton (2009))
- The “sassy system” is “an integrated set of packages designed to make programmers more productive in R, particularly those with a background in SAS® software. The system leverages useful concepts and thought patterns to create a more efficient and satisfactory R programming experience.”
- In particular, the procs package in R provides versions of common SAS procedures, such as ‘proc freq’, ‘proc means’, ‘proc ttest’, ‘proc reg’, ‘proc transpose’, ‘proc sort’, and ‘proc print’
- R for SAS and SPSS users (Muenchen (2011))
- Building reproducible analytical pipelines with R (Rodrigues (2023))
- Posit Recipes: Some tasty R code snippets: https://posit.cloud/learn/recipes
- R for Reproducible Scientific Analysis (Software Carpentry): https://swcarpentry.github.io/r-novice-gapminder/
2 UC Davis R programming courses
There are several dedicated UC Davis courses on R programming:
-
BIS 015L: Introduction to Data Science for Biologists
- see course materials at https://jmledford3115.github.io/datascibiol/
-
ENV 224/ ECL 224: Data Management & Visualization in R
- see lecture videos and course materials at https://ucd-rdavis.github.io/R-DAVIS/index.html
- ESP 106: Environmental Data Science
- STA 015B: Introduction to Statistical Data Science II
- STA 032: Gateway to Statistical Data Science
- STA 035A: Statistical Data Science
- STA 035B: Statistical Data Science II
- STA 141A: Fundamentals of Statistical Data Science
- STA 242: Introduction to Statistical Programming
- ABG 250: Mathematical Modeling in Biological Systems
- PSC 203A
: “Data Cleaning & Management in the Social Sciences” - PSC 203B “Data Visualization in the Social Sciences”
DataLab maintains another list of courses: https://datalab.ucdavis.edu/courses/
DataLab also provides short-form workshops on R programming and data science: https://datalab.ucdavis.edu/workshops/
3 Demographics tables
Demographics tables are important first steps in many data analyses and papers.
The gtsummary package is flexible and can probably provide whatever table options you’re looking for, and if not, the developers are usually very welcoming of feature requests.
If gtsummary is really not doing what you want, other packages I’ve used for demographics tables include:
- https://cran.r-project.org/web/packages/procs/ (replicates common SAS commands)
- https://cran.r-project.org/web/packages/arsenal/index.html (from the Mayo Clinics)
- https://cran.r-project.org/web/packages/table1/index.html
4 Writing functions
- Read this ASAP: https://r4ds.hadley.nz/functions.html
- Use this as a reference: https://adv-r.hadley.nz/functions.html
4.1 Methods versus functions
4.2 Debugging code
5 data.frames and tibbles
5.1 Displaying tibbles
6 The tidyverse
The tidyverse is an opinionated collection of R packages designed for data science. All packages share an underlying design philosophy, grammar, and data structures.
- https://www.tidyverse.org/
These packages are being actively developed by Hadley Wickham and his colleagues at posit1.
Details:
7 Piping
See Wickham et al. (2023) for details.
There are currently (2025) two commonly-used pipe operators in R:
%>%: the “magrittrpipe”, from themagrittrpackage (Bache and Wickham (2022); re-exported bydplyrand others) .|>: the “native pipe”, from base R (\(\geq\) 4.1.0)
See https://www.tidyverse.org/blog/2023/04/base-vs-magrittr-pipe for a comparison of their behavior.
7.1 Which pipe should I use?
Wickham et al. (2023) recommends the native pipe:
For simple cases, |> and %>% behave identically. So why do we recommend the base pipe? Firstly, because it’s part of base R, it’s always available for you to use, even when you’re not using the tidyverse. Secondly, |> is quite a bit simpler than %>%: in the time between the invention of %>% in 2014 and the inclusion of |> in R 4.1.0 in 2021, we gained a better understanding of the pipe. This allowed the base implementation to jettison infrequently used and less important features.
7.2 Why doesn’t ggplot2 use piping?
Here’s tidyverse creator Hadley Wickham’s answer (from 2018):
I think it’s worth unpacking this question into a few smaller pieces:
- Should ggplot2 use the pipe? IMO, yes.
- Could ggplot2 support both the pipe and plus? No
- Would it be worth it to create a ggplot3 that uses the pipe? No.
8 Grouping operations in dplyr
The dplyr package provides two approaches for grouping data:
-
Persistent grouping with
group_by(): Creates a grouped data frame that remains grouped for subsequent operations until explicitly ungrouped -
Per-operation grouping with the
.byargument: Applies grouping for a single operation only, without modifying the data frame structure
Recommendation: Default to using per-operation grouping with the .by argument, as it is more explicit, reduces the risk of accidentally operating on grouped data, and eliminates the need to remember to ungroup().
For a detailed comparison of these approaches, see ?dplyr_by.
9 Quarto
Quarto is a system for writing documents with embedded R code and/or results:
- Read this ASAP: https://r4ds.hadley.nz/communicate
- Then use this for reference: https://quarto.org/docs/reference/
- Learn LaTeX in 30 minutes (not everything in here is relevant to Quarto): https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes
- LaTeX symbol reference guide: https://oeis.org/wiki/List_of_LaTeX_mathematical_symbols
- LaTeX commands: https://www.overleaf.com/learn/latex/Commands
- LaTeX cheat sheet: https://wch.github.io/latexsheet/latexsheet.pdf
9.0.1 Building PDF documents
To compile Quarto documents to PDF, you need a LaTeX installation. TinyTeX is a lightweight, portable LaTeX distribution recommended for use with Quarto.
Recommended method (run from the terminal/command line):
quarto install tinytexAlternative method (run from the R console):
For more details, see:
- Quarto PDF engine documentation: https://quarto.org/docs/output-formats/pdf-engine.html
- TinyTeX documentation: https://yihui.org/tinytex/
- Video tutorial: Preparing RStudio to Generate PDF Files with Quarto and TinyTeX
See Knuth (1984) for additional discussion of literate programming.
10 One source file, multiple outputs
One of quarto’s excellent features is the ability to convert the same source file into multiple output formats; in particular, I am using the same set of source files to generate an html website, a pdf document, and a set of revealjs slide decks.
I use ::: notes divs to mark text chunks to omit from the revealjs format but include in the website and pdf format.
11 Packages
This book espouses our philosophy of package development: anything that can be automated, should be automated. Do as little as possible by hand. Do as much as possible with functions. The goal is to spend your time thinking about what you want your package to do rather than thinking about the minutiae of package structure.
https://r-pkgs.org/introduction.html#:~:text=This%20book%20espouses,of%20package%20structure.
Read this ASAP: https://r-pkgs.org/whole-game.html
Use the rest of Wickham and Bryan (2023) as a reference
12 Submitting packages to CRAN
- Read this first: https://r-pkgs.org/release.html
- A problems-and-solutions book is under construction: https://contributor.r-project.org/cran-cookbook/
13 Git
94% of respondents to a 2022 Stack Overflow survey reported using git for version control.
14 Spatial data science
- Pebesma and Bivand (2023)
15 Shiny apps
16 Making the most of RStudio
Over time, explore all the tabs and menus; there are a lot of great quality-of-life features.
- use the
Historytab to view past commands; you can rerun them or copy them into a source code file in one click! (up-arrow in the Console also enables this process, but less easily).
17 Contributing to R
Many modern R packages are developed on Github, and welcome bug reports and pull requests (suggested edits to source code) through the Github interface.
To contribute to “base R” (the core systems), see https://contributor.r-project.org/