Common Code 01 — Libraries
Every package used in this course, grouped by purpose
Every R package used in the course, grouped by purpose, with a one-time install script so you never re-run install.packages() by accident.
Package Reference
This page lists every R package used in this course, organised from beginner essentials through to advanced methods. Install each group once using the code blocks below — you only ever need to run install.packages() one time per machine. After that, load only the packages you need for a given session with library().
⬇️ Download the full install script — copy it into your
scripts/folder and run it once:install_packages.R
⚠️ Watch out! Never put
install.packages()inside a script you run regularly. Installation only needs to happen once. Putting it in a regular script re-downloads the package every time, which is slow and can break things.
1 · Core Workflow
These are the packages you will load in almost every analysis. Install them first.
install.packages("tidyverse") # dplyr, ggplot2, tidyr, purrr, readr, stringr, forcats
install.packages("lubridate") # working with dates and times
install.packages("readxl") # read Excel (.xlsx / .xls) files into R
install.packages("writexl") # write data frames back out to Excel
install.packages("janitor") # clean messy column names and tabulate data
install.packages("skimr") # quick, readable summary statistics
install.packages("glue") # paste strings together cleanly with {variable} syntax
install.packages("devtools") # install packages from GitHub and other sources
install.packages("remotes") # lighter alternative to devtools for GitHub installsWhat you load each session
library(tidyverse) # loads dplyr, ggplot2, tidyr, readr, purrr, stringr, forcats
library(lubridate) # date / time helpers
library(readxl) # read Excel files
library(janitor) # clean_names() and tabyl()
library(skimr) # skim() for quick summaries2 · Plotting
Core plotting extensions
ggplot2 is already part of tidyverse. These packages add to it.
install.packages("patchwork") # combine multiple ggplot panels into one figure
install.packages("scales") # fine-grained control of axis breaks, labels, and colours
install.packages("ggthemes") # extra complete themes (Economist, FiveThirtyEight, etc.)
install.packages("ggridges") # ridge / joy plots for overlapping distributions
install.packages("ggpubr") # publication-ready figures; add p-value brackets to plotsColour and style
install.packages("viridis") # perceptually uniform, colour-blind-safe palettes
install.packages("ggtext") # render markdown / HTML inside plot text and labels
install.packages("showtext") # use Google Fonts and custom fonts in ggplot
install.packages("ragg") # fast, high-quality PNG/TIFF rendering deviceInteractive and animated plots
install.packages("plotly") # turn any ggplot into an interactive HTML figure
install.packages("ggiraph") # add tooltips and click interactions to ggplot geoms
install.packages("gganimate") # animate ggplots (requires gifski or av for output)
install.packages("gifski") # render gganimate output as GIF
install.packages("av") # render gganimate output as MP4 videoSaving and previewing
install.packages("ggview") # preview a plot at exact export dimensions before saving3 · Tables
For getting results out of R and into Word documents or HTML pages.
install.packages("flextable") # publication tables that export cleanly to Word and PowerPoint
install.packages("gt") # grammar-of-tables: highly customisable HTML/PDF tables
install.packages("knitr") # kable() for simple tables inside Quarto documents
install.packages("kableExtra") # extend kable() with styling, spanning headers, and more
install.packages("tinytable") # minimal, fast tables designed for Quarto
install.packages("huxtable") # tables that export to Word, LaTeX, and HTML
install.packages("officer") # read and write Word and PowerPoint files from R
install.packages("webshot2") # screenshot HTML widgets to PNG (required by some table packages)
install.packages("pandoc") # R interface to the pandoc document converter4 · Data Import and Export
install.packages("readxl") # (already in Core — listed again for reference)
install.packages("writexl") # write to Excel without Java or other dependencies
install.packages("arrow") # read/write Parquet and Feather files; very fast large data
install.packages("duckdb") # run SQL queries on data frames and Parquet files directly in R5 · Descriptive Statistics
First steps when you have data in hand.
install.packages("skimr") # (already in Core) skim() gives a fast distributional overview
install.packages("psych") # describe(), pairs.panels(), alpha() for scale reliability
install.packages("Hmisc") # rcorr(), and a large collection of utility functions
install.packages("moments") # skewness() and kurtosis()
install.packages("FSA") # Dunn test, length-frequency analysis, age-bias plots6 · Statistical Tests
General tests
install.packages("car") # Anova() with Type II/III SS; leveneTest(); vif()
install.packages("broom") # tidy(), glance(), augment() — model output as tibbles
install.packages("emmeans") # estimated marginal means and pairwise contrasts
install.packages("multcompView") # compact letter display for pairwise comparisons
# NOTE: can mask some dplyr functions — load with care
install.packages("Rmisc") # summarySE() for mean ± SE tables
install.packages("coin") # exact and permutation-based versions of common tests
install.packages("rcompanion") # effect sizes and non-parametric summaries
install.packages("pwr") # power analysis for t-tests, ANOVA, correlation, chi-square
install.packages("perm") # exact permutation tests7 · ANOVA and Linear Models
install.packages("car") # (already listed) Type II/III ANOVA; assumption checks
install.packages("afex") # aov_ez() for factorial ANOVA; handles repeated measures cleanly
install.packages("emmeans") # (already listed) pairwise comparisons after ANOVA
install.packages("multcompView") # (already listed) letter displays for post-hoc tests
install.packages("relaimpo") # relative importance of predictors in multiple regression
install.packages("broom") # (already listed) tidy model output8 · Mixed-Effects Models
For nested, repeated-measures, or hierarchical data structures.
install.packages("lme4") # lmer() and glmer() — the core mixed-model engine in R
install.packages("lmerTest") # adds p-values to lmer() output (Satterthwaite degrees of freedom)
install.packages("broom.mixed") # tidy() and glance() for lme4 and nlme model objects
install.packages("afex") # (already listed) mixed_() wrapper for factorial mixed models
install.packages("emmeans") # (already listed) contrasts and marginal means for mixed models
install.packages("performance") # R², ICC, and check_model() diagnostic plots
install.packages("see") # visualisation companion to performance
install.packages("sjPlot") # plot_model() for fixed/random effects; tab_model() tables9 · Generalised Linear Models
For count data, proportions, binary outcomes, and zero-inflated responses.
install.packages("car") # (already listed) Anova() works for GLMs too
install.packages("broom") # (already listed) tidy GLM output
install.packages("emmeans") # (already listed) marginal means on the response scale
install.packages("pscl") # zero-inflated Poisson and negative-binomial GLMs
install.packages("DHARMa") # residual diagnostics for GLMs and GLMMs via simulation
install.packages("ResourceSelection") # Hosmer-Lemeshow goodness-of-fit for logistic regression
install.packages("faraway") # datasets and functions from Faraway's GLM textbook10 · Model Visualisation and Comparison
install.packages("dotwhisker") # dot-and-whisker coefficient plots for regression models
install.packages("ggfortify") # autoplot() for lm, glm, PCA, time-series objects
install.packages("interactions") # interact_plot() and cat_plot() for interaction effects
install.packages("performance") # (already listed) compare model fit, check assumptions
install.packages("see") # (already listed) plots for performance outputs
install.packages("sensemakr") # sensitivity analysis for unmeasured confounding11 · Correlation and Multivariate
install.packages("corrplot") # visualise correlation matrices as coloured grids or circles
install.packages("GGally") # ggpairs() scatterplot matrix; ggcoef() coefficient plots
install.packages("psych") # (already listed) polychoric / tetrachoric correlations
install.packages("FactoMineR") # PCA, CA, MCA — full-featured multivariate methods
install.packages("factoextra") # ggplot-based biplots and scree plots for FactoMineR / prcomp12 · Community Ecology and Multivariate Ordination
install.packages("vegan") # NMDS, PERMANOVA (adonis2), diversity indices, ordination
install.packages("RVAideMemoire") # pairwise PERMANOVA and other ecology helpers
install.packages("pairwiseAdonis") # pairwise adonis2 (CRAN version)The GitHub development version of pairwiseAdonis is more up to date:
devtools::install_github("pmartinezarbizu/pairwiseAdonis/pairwiseAdonis")13 · Maps and Spatial Data
install.packages("sf") # simple features: the standard for vector spatial data in R
install.packages("tigris") # download US Census TIGER shapefiles (states, counties, roads)
install.packages("rnaturalearth") # world country, coastline, and graticule shapefiles
install.packages("osmdata") # download OpenStreetMap features (roads, buildings, waterways)
install.packages("ggfx") # blur, shadow, and glow effects on ggplot layersFor 3D terrain rendering:
install.packages(c("rayshader", "elevatr", "raster"))
# rayshader — render elevation data as 3D maps and raytraced scenes
# elevatr — download elevation rasters from AWS or OpenTopography
# raster — raster grid operations (legacy package; terra is the modern replacement)14 · Teaching Datasets
Clean, well-documented datasets used in examples throughout the course.
install.packages("palmerpenguins") # Palmer Archipelago penguin data — a tidy alternative to iris
install.packages("nycflights13") # 336,776 flights departing New York City in 2013
install.packages("Lahman") # Sean Lahman's complete baseball statistics database
install.packages("babynames") # US baby name counts and proportions, 1880–2017
install.packages("repurrrsive") # nested list datasets for learning purrr and iteration15 · Reporting and Workflow
install.packages("htmlwidgets") # embed interactive HTML widgets in Quarto documents
install.packages("htmltools") # build and manipulate HTML output from RFull install script
The block below installs everything in one go. Paste it into the Console (not a script) and run it once. Expect this to take 10–20 minutes the first time.
# ── CORE ──────────────────────────────────────────────────────────────────────
install.packages(c(
"tidyverse", "lubridate", "readxl", "writexl",
"janitor", "skimr", "glue", "devtools", "remotes"
))
# ── PLOTTING ──────────────────────────────────────────────────────────────────
install.packages(c(
"patchwork", "scales", "ggthemes", "ggridges", "ggpubr",
"viridis", "ggtext", "showtext", "ragg",
"plotly", "ggiraph", "gganimate", "gifski", "av",
"ggview", "camcorder", "ggThemeAssist", "styler"
))
# ── TABLES ────────────────────────────────────────────────────────────────────
install.packages(c(
"flextable", "gt", "knitr", "kableExtra",
"tinytable", "huxtable", "officer", "webshot2", "pandoc"
))
# ── DATA ──────────────────────────────────────────────────────────────────────
install.packages(c("arrow", "duckdb"))
# ── DESCRIPTIVE STATS ─────────────────────────────────────────────────────────
install.packages(c("psych", "Hmisc", "moments", "FSA"))
# ── STATISTICAL TESTS ─────────────────────────────────────────────────────────
install.packages(c(
"car", "broom", "emmeans", "multcompView",
"Rmisc", "coin", "rcompanion", "pwr", "perm"
))
# ── ANOVA & LINEAR MODELS ─────────────────────────────────────────────────────
install.packages(c("afex", "relaimpo"))
# ── MIXED MODELS ──────────────────────────────────────────────────────────────
install.packages(c(
"lme4", "lmerTest", "broom.mixed",
"performance", "see", "sjPlot"
))
# ── GLMS ──────────────────────────────────────────────────────────────────────
install.packages(c(
"pscl", "DHARMa", "ResourceSelection", "faraway"
))
# ── MODEL VISUALISATION ───────────────────────────────────────────────────────
install.packages(c(
"dotwhisker", "ggfortify", "interactions", "sensemakr"
))
# ── MULTIVARIATE ──────────────────────────────────────────────────────────────
install.packages(c(
"corrplot", "GGally", "FactoMineR", "factoextra",
"vegan", "RVAideMemoire", "pairwiseAdonis"
))
devtools::install_github("pmartinezarbizu/pairwiseAdonis/pairwiseAdonis")
# ── MAPS ──────────────────────────────────────────────────────────────────────
install.packages(c(
"sf", "tigris", "rnaturalearth", "osmdata", "ggfx",
"rayshader", "elevatr", "raster"
))
# ── TEACHING DATASETS ─────────────────────────────────────────────────────────
install.packages(c(
"palmerpenguins", "nycflights13", "Lahman", "babynames", "repurrrsive"
))
# ── REPORTING ─────────────────────────────────────────────────────────────────
install.packages(c("htmlwidgets", "htmltools"))End of Common Code 01 — Libraries. Next: Common Code 02 — Reading and writing files.