• Home
  • Start here
  • Build with R
    • Track overview
    • 1. Blogging with Quarto
    • 2. Everything in its right place
    • 3. Data from words
    • 4. Making data move
    • 5. Mapping despair in the USA
    • 6. Just take it
    • 7. Make it shine
    • 8. Smart reports
    • 9. Do it well, do it fast
  • Work with AI
    • Track overview
    • 1. Talking to machines
    • 2. Chat with your data
    • 3. Grounded in truth
    • 4. Agentic coding
    • Ask R4DEV 🤖 (live capstone)
  • Think with data
    • Track overview
    • 1. Embrace the noise
    • 2. There is only one test
    • 3. All models are wrong
    • 4. Draw your assumptions
    • 5. Think Bayes
  • Practice
  • Resources
  • About R4DEV

R4DEV

A hands-on workshop · running since 2022

More fiction is written in Excel than in Word.

Learn to turn messy information into reproducible analysis, compelling visualisations, interactive applications, and AI-assisted workflows – all in R.

Start learning → Explore the curriculum →

All progress is piecemeal, so the workshop improves permanently. Keep the Posit cheat sheets and the tidyverse style guide close. Thanks to Zélie, Rebecca, Rossana, Romane, Emma, Shivona, Maria, Valeria, Laura, Sofia, Maëlle and many others who tested, often with their patience, earlier versions of this workshop.

The R4DEV logo mark

The R4DEV logo mark

Learning tracks

Three tracks, nineteen lessons. Each is self-contained enough to enter on its own, but reads best in order.

Build with R

Retrieve, transform, visualise, communicate, and scale data workflows with R.

9 lessonsBeginner → Advanced

View track →

Work with AI

Use large language models as programmable tools for extraction, analysis, retrieval, and application development.

5 lessonsIntermediate

View track →

Think with data

Reason clearly about uncertainty, inference, models, causality, and Bayesian evidence.

5 lessonsIntermediate → Advanced

View track →

New to R4DEV? Start here for prerequisites, install steps, and a recommended route through the material.

Build with R

Blogging with Quarto 📓

Learn to work with Quarto, to write prose and analyse data at the same time. Create and update a blog using Quarto and then publish it online using Netlify

Everything in its right place 🎼

Learn how to get information from APIs with httr2, and create interactive visualisations of historical GDP, Kyoto weather and archived Spotify songs using ggplot2, plotly…

Data from words 📚

Import, clean, tokenise and stem text, plus do sentiment analysis, topic modelling and learn how functions in R make your work so much easier.

Making data move 🚶

Transform static plots into animations using gganimate. Examples include millennia of cherry tree blossoms, COVID-19 aftermath and why causation does not imply correlation.

Mapping despair in the USA 🗺️

Learn how to find, download and visualise spatial data. We’ll create static and interactive maps using ggplot2 and leaflet, using data on the opioid epidemic in the United…

Just take it 🌏

Sometimes you need to bring data straight from a website. Scrape IMDb movie rankings, U2 lyrics and untranslatable words.

Make it shine 🌟

These are the best sessions, bringing together all the tools from previous sessions to create interactive apps. You’ll learn how to build and publish Shiny dashboards and…

Smart reports 🧠

Create parametrised reports and learn to work with references using Zotero.

Do it well, do it fast 🏎️

map() replaces the for-loop; mirai replaces ‘one core at a time’. Learn purrr’s functional style, then parallelize it with a single wrapper function – no rewrite required.

No matching items

Work with AI

Talking to machines 🤖

LLMs are not just chatbots: they are functions you can call from R. Learn to chat, design prompts, extract structured data from text, and give models tools –all with ellmer.

Chat with your data 💬

Put a language model inside your Shiny apps: streaming chat UIs with shinychat, natural-language data filtering with querychat, and SQL that draws its own charts with ggsql.

Grounded in truth 🧭

Build a real RAG pipeline end to end with ragnar: crawl a site, chunk it, embed it for free with a local model, store it in DuckDB, retrieve two different ways, and hand…

Agentic coding 🦾

An agent is an LLM in a loop with tools. Learn what that actually means, meet the main agentic coding tools –Claude Code, Codex, OpenClaw, Antigravity– and the vocabulary…

No matching items

Think with data

Embrace the noise 🎲

Every number you compute from data could have come out differently. Learn to see sampling variation by simulating it: random draws, the law of large numbers, and the central…

There is only one test 🃏

All of hypothesis testing is one idea: build a world where nothing is going on, simulate it, and ask if your data would be surprising there. Learn it by shuffling with the…

All models are wrong 📏

The regression line is the most used –and most over-trusted– model on Earth. Learn to fit it, tidy it with broom, dress it in honest uncertainty with the bootstrap, and…

Draw your assumptions before drawing your conclusions 🔀

Correlation is not causation –but why, exactly, and what would be? Learn the three atoms of causal structure (fork, chain, collider), simulate each one to see when…

Think Bayes 🤔

Toss a globe, count the water, and watch a probability distribution learn. A gentle first contact with Bayesian inference, animated with the tools from session 4.

No matching items

Resources

Feedback 🔁

Take a minute to tell me what you liked, what you didn’t like, and how to improve the workshop. Anonymously, if you’d like.

Practice, test 💪

Test your code directly in the R4DEV blog, enabled thanks to the quarto-live extension: R running in your browser, no installation needed.

R-sources 📙

This is just the beginning. Here you will find a repository of resources to learn more by topic: statistics, geocomputation, text analysis, building apps, etc.

No matching items

Posit cheat sheets Tidyverse style guide

Back to top

📉 R4DEV 📈

Licensed under
Creative Commons CC BY 4.0

Cookie Preferences

Created with R and Quarto