Hadley Wickham
banner
hadley.nz
Hadley Wickham
@hadley.nz
R, data, 🐕, 🍸, 🌈. He/him.
I am tremendously grateful for open source, as it’s had such a huge impact on my career. That’s one of the reasons I’m so happy that Posit has committed to the @opensourcepledge.com. Read about our contributions to non Posit projects at posit.co/blog/posit-o....
Posit’s progress and renewed commitment to the Open Source Pledge - Posit
Posit continues its Open Source Pledge, investing heavily to support the open-source data science ecosystem.
posit.co
November 28, 2025 at 2:03 PM
Reposted by Hadley Wickham
nlmixr2 is becoming an R Consortium Working Group!

Open-source NLME modeling in R that can compete with commercial pharmacometric tools and support regulatory submissions.

More: r-consortium.org/posts/nlmixr...

#RStats #pharma
November 26, 2025 at 6:31 PM
Reposted by Hadley Wickham
I don't know how I've missed it because it's *right on the documentation home page*, but if you use {glue} for nice string interpolation in #rstats and you have {stringr} loaded (likely through the tidyverse), you can use str_glue() instead of glue::glue() or loading library(glue) glue.tidyverse.org
November 25, 2025 at 6:00 PM
Reposted by Hadley Wickham
#rstats Please welcome Jarl, a new R linter.

Jarl is a CLI tool with extensions in VS Code, Positron, and Zed. It can check thousands of lines of R code in milliseconds.

Jarl provides several output formats, a Github Actions workflow, and more.

Blog post: www.etiennebacher.com/posts/2025-1...
November 20, 2025 at 4:50 PM
Reposted by Hadley Wickham
We are absolutely thrilled to welcome Hadley Wickham @hadley.nz as a keynote speaker for the rainbowR conference!

To find out more about the conference, including how to submit a proposal, and to sign-up for updates, see conference.rainbowr.org
November 20, 2025 at 6:34 PM
Reposted by Hadley Wickham
I'm honoured and delighted to be delivering the keynote for Japan.R 2025 in Tokyo on Dec 6.

New ideas on creativity and community in open source software. Live demonstrations of ggbot2, OpenTelemetry and mirai (Posit ecosystem-wide initiatives).

#Rstats #Tidyverse
japanr.connpass.com/event/374714/
japanr.connpass.com
November 20, 2025 at 12:20 PM
Reposted by Hadley Wickham
Last week I posted about using structured output in {ellmer} to turn text into data, but a friend pointed out that the LLM had mixed up the words "conscious" and "consciousness" in its summary.

So how can we fix that? 🧵(1/3)

#rstats #llms #ai
November 18, 2025 at 10:08 AM
ellmer 0.4.0 is out now! New features include Claude caching & file uploads, support for newer OpenAI responses API, web search tools, and better security. Read more at tidyverse.org/blog/2025/11... #rstats
ellmer 0.4.0
ellmer 0.4.0 includes important lifecycle updates, new Claude features (caching, file uploads, web tools), OpenAI improvements, and enhancements to error handling, pricing tracking, and security.
tidyverse.org
November 18, 2025 at 6:38 AM
Reposted by Hadley Wickham
Are there any #rstats tools to make it easier to format
names into a dataset into parts of a string for a model formula?

I often do things like this and copy to my script:

> names(iris)[1:4] |> paste(collapse = " + ")
[1] "Sepal.Length + Sepal.Width + Petal.Length + Petal.Width"
November 17, 2025 at 2:57 AM
Reposted by Hadley Wickham
My R+AI Conf talk is now available on YouTube: youtu.be/828KuEORQdg?...

I talked about my R package {brandthis} that helps you getting started with theming your quarto outputs and shiny apps by quickly generating brand.yml files and color palettes for R and Python plots

#RStats
November 16, 2025 at 2:58 AM
Reposted by Hadley Wickham
To be effective, data science agents need to be able to read plots reliably. @sara-altman.bsky.social and I wrote about some concerning findings on LLMs' ability to interpret plots when the content contradicts their expectations on the @posit.co blog.

posit.co/blog/introdu...
When plotting, LLMs see what they expect to see - Posit
Data science agents need to accurately read plots even when the content contradicts their expectations. Our testing shows today's LLMs still struggle here.
posit.co
November 13, 2025 at 3:07 PM
testthat 3.3.0 out now! This is a massive release with tons of improvements including better failure messages, new expectations, improved snapshotting, new vignettes, and much much more: tidyverse.org/blog/2025/11... Post includes some thoughts on developing an #rstats package with Claude Code.
testthat 3.3.0
testthat 3.3.0 brings improved expectations with better error messages, new expectations for common testing patterns, and lifecycle changes including the removal of `local_mock()` and `with_mock()`. I...
tidyverse.org
November 13, 2025 at 5:24 PM
Reposted by Hadley Wickham
This gives a fantastic framing of how to think about reproducibility (it's a spectrum) and how to use renv with intention. Highly recommend, even if you're not using renv, to get a better understanding of how to live in peace as R and package versions advance 🕊️ #rstats
The recording of my #rstats posit::conf talk ✨ practical {renv}✨ is available! 🎉

I created this talk for frustrated {renv} users 🫠 and potential {renv} users🤩

youtu.be/l01u7Ue9pIQ?...

Even if {renv} isn't on your radar, you may still find this talk interesting if you are curious about🤔...
Practical {renv} (Shannon Pileggi, The PCCTC) | posit::conf(2025)
YouTube video by Posit PBC
youtu.be
November 12, 2025 at 5:32 PM
Reposted by Hadley Wickham
We're hiring an open-source #python developer focused on modeling APIs!

tidyverse.org/blog/2025/11...

#numpy #scipy #scikitlearn
Python Open-Source Developer
Posit is hiring a Python open-source developer to create more data analysis tools.
tidyverse.org
November 12, 2025 at 5:46 PM
Reposted by Hadley Wickham
My keynote about data science tools at posit::conf is now online! I originally meant it to be a talk about Positron, but as I was writing it, it took a left turn through the history of RStudio and into the philosophy of tool design & how to build stuff for people.

www.youtube.com/watch?v=tGre...
10 Years of Data Science Tools...and What Happens Next (Jonathan McPherson) | posit::conf(2025)
YouTube video by Posit PBC
www.youtube.com
November 7, 2025 at 6:11 PM
Reposted by Hadley Wickham
We are looking for #rstats community feedback on 3 new dplyr functions!

We're aiming to expand the `filter()` family:

- `filter()` to keep rows
- `filter_out()` to drop rows
- `when_any()` and `when_all()` as modifiers

Read more and leave feedback here:
github.com/tidyverse/ti...
November 7, 2025 at 4:03 PM
Y’all these genzplyr PRs are off the hook: github.com/hadley/genzp...
Pull requests · hadley/genzplyr
dplyr but make it bussin fr fr no cap. Contribute to hadley/genzplyr development by creating an account on GitHub.
github.com
November 8, 2025 at 12:29 AM
filter_out() = yeet()
We are looking for #rstats community feedback on 3 new dplyr functions!

We're aiming to expand the `filter()` family:

- `filter()` to keep rows
- `filter_out()` to drop rows
- `when_any()` and `when_all()` as modifiers

Read more and leave feedback here:
github.com/tidyverse/ti...
November 7, 2025 at 4:34 PM
Do you teach #rstats? Do your students complain about how lame and old-fashioned dplyr is? Don't worry: I have the solution for you: github.com/hadley/genzp....

genzplyr is dplyr, but bussin fr fr no cap.
GitHub - hadley/genzplyr: dplyr but make it bussin fr fr no cap
dplyr but make it bussin fr fr no cap. Contribute to hadley/genzplyr development by creating an account on GitHub.
github.com
November 6, 2025 at 11:25 PM
Based on the frequency of me typing it, I'm thinking about creating a new testhat package, presumably for testing hats.
November 6, 2025 at 2:40 PM
pkgdown 2.2.0 now out — tidyverse.org/blog/2025/11.... Main feature is new build_llm_docs() which makes your websites easier to understand by LLMs. (Which you can easily turn off if desired) #rstats
pkgdown 2.2.0
The latest version of pkgdown automatically builds markdown files that make it easy for LLMs to use your website.
tidyverse.org
November 6, 2025 at 1:45 PM
Reposted by Hadley Wickham
I'm excited to share side::kick(), an experimental open-source coding agent for RStudio built entirely in R. It can interact with your files, communicate with your active #rstats session, and run code.

Check it out: github.com/simonpcouch/...
November 5, 2025 at 3:57 PM
And stringr 1.6.0 is out too: tidyverse.org/blog/2025/11.... A fairly small release but some handy improvements thanks to tidyverse dev day contributors! #rstats
stringr 1.6.0
This release deprecates `str_like(ignore_case)` and changes the behaviour of `str_replace_all()` for function replacements. It also introduces `str_ilike()` for case-insensitive SQL-like pattern matc...
tidyverse.org
November 4, 2025 at 10:45 PM
Reposted by Hadley Wickham
Purrr is great and while I can still struggle with remembering the exact behavior of map functions, {purrr} is definitely becoming a staple for my own coding
November 4, 2025 at 2:45 PM