Davis Vaughan's Avatar

Davis Vaughan

@davisvaughan

Building tools for R users, these days mostly in Rust πŸ¦€ https://blog.davisvaughan.com https://github.com/DavisVaughan

2,981
Followers
211
Following
230
Posts
12.11.2023
Joined
Posts Following

Latest posts by Davis Vaughan @davisvaughan

i live 20 minutes down the road, just hmu next time πŸ˜‚

08.03.2026 23:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Literally no one:
Like absolutely no one at all:

Me: `uvx --from air-formatter air format path/to/script.R`

27.02.2026 22:41 πŸ‘ 14 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0
I miss thinking hard.

www.jernesto.com/articles/thi...

27.02.2026 11:52 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Come for Isabella's puns πŸ˜‚ stay for the peek behind the curtain of how functions get added to or deprecated from #tidyverse packages like #dplyr πŸ‘€ from @davisvaughan.bsky.social himself

Tomorrow! Tues 12pm ET! Register at pos.it/dslab if you haven't already πŸ‘πŸ» and we'll see you there #databs #rstats

24.02.2026 04:18 πŸ‘ 16 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
Hello, dplyr 1.2.0! Join us with Davis Vaughan to explore new functions! Tuesday, Feb 24 at 12pm ET pos.it/dslab

Hello, dplyr 1.2.0! Join us with Davis Vaughan to explore new functions! Tuesday, Feb 24 at 12pm ET pos.it/dslab

I'm beyond excited for tomorrow's Data Science Lab with @davisvaughan.bsky.social!

dplyr 1.2.0 is now out. There are many new functions in this release, and you will see them in action, live. You won't want to `filter_out()` this info πŸ˜‰

Join us, we can't `replace_*` you 🧑 pos.it/dslab

23.02.2026 18:43 πŸ‘ 31 πŸ” 7 πŸ’¬ 3 πŸ“Œ 1
plt.close() triggers "Error rendering plot to 'Auto' size: RPC timed out..." Β· Issue #7915 Β· posit-dev/positron System details: Positron and OS details: Positron Version: 2025.06.0 (Universal) build 146 Code - OSS Version: 1.100.0 Commit: 5d50f36 Date: 2025-05-27T03:33:41.580Z Electron: 34.5.1 Chromium: 132....

Thanks! Has something to do with the plt.close(). We've got it tracked here and will bump to resolve for the next release github.com/posit-dev/po...

20.02.2026 19:29 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

never have i ever desired this blasphemy

df <- data.frame(x = 1:2, y = 3:4)

cols <- "x"
df[, cols]

cols <- c("x", "y")
df[, cols]

20.02.2026 18:26 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

In other words - If the author doesn't care about their own content, why should I?

20.02.2026 13:12 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

We use the jupyter protocol to power our console/plot pane so im a bit surprised it didn't work. We should support display_data and update_display_data. If you have a reprex that consistently fails then we'd happily take an issue for it!

19.02.2026 23:31 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Nice!! Very Positron/RStudio-esque! Positron's Statement Range (CMD+Enter) feature works similarly, the R backend for it also uses tree-sitter like this. It's all wired up as a custom LSP Request github.com/posit-dev/ar...

19.02.2026 22:07 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
posit::glimpse() Newsletter – February 2026 - Posit This edition covers major updates from Posit, including new versions of ggplot2, ellmer, and dplyr.

The newest edition of posit::glimpse() is here! πŸš€

Read a roundup of major #RStats & #Python updates: ggplot2 4.0.0, dplyr 1.2.0, ellmer 0.4.0, Positron native Jupyter Notebook support , and more.

🎟️ Plus, registration for posit::conf(2026) is officially OPEN!

Find it here: posit.co/blog/posit-g...

18.02.2026 16:34 πŸ‘ 11 πŸ” 8 πŸ’¬ 0 πŸ“Œ 0

see also bsky.app/profile/davi...

16.02.2026 19:00 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

screaming this from the rooftops

16.02.2026 18:56 πŸ‘ 15 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Post image

#rstats filter_out is good

10.02.2026 18:35 πŸ‘ 33 πŸ” 8 πŸ’¬ 1 πŸ“Œ 0

In the end that's where 90% of the effort went!

10.02.2026 13:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

That's a crazy improvement for such a frequently used function

10.02.2026 13:15 πŸ‘ 1 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0

And for package developers, an extra special gift!

The low dependency vctrs package now has:

- vec_if_else()
- vec_case_when()
- vec_replace_when()
- vec_recode_values()
- vec_replace_values()

Use these in your packages when you want the consistency of the tidyverse without a dplyr dependency!

10.02.2026 13:03 πŸ‘ 3 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0
Preview
`dplyr::if_else()` and `dplyr::case_when()` are up to 30x faster dplyr 1.2.0 comes with much faster and more memory efficient `if_else()` and `case_when()` functions!

Last week we released dplyr 1.2.0, but we left off something VERY important πŸ™‚

`dplyr::if_else()` and `dplyr::case_when()` are now up to 30x faster and use 10x less memory!

We dive into how we achieved these numbers in this new #rstats post!

tidyverse.org/blog/2026/02...

10.02.2026 13:03 πŸ‘ 127 πŸ” 21 πŸ’¬ 4 πŸ“Œ 1
Preview
davisvaughan's comment on "dplyr 1.2.0 released - adds filter_out, recode_values, replace_values, replace_when, etc." Explore this conversation and more from the rstats community

With character vectors maybe, but if you use any types besides character/numeric then that simple approach no longer works. recode_values() works with any type! Plus I think the added safety of `unmatched` is pretty meaningful! www.reddit.com/r/rstats/com...

09.02.2026 22:28 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Being able to use a lookup table & just use "from" & "to" language like this is SUCH a wonderfully change for me when recoding values πŸ₯Ή #dplyr has always felt conversational to me, & now we can finally use it to say "recode this variable from this to that" without typing a long case_when #rstats

09.02.2026 20:00 πŸ‘ 56 πŸ” 8 πŸ’¬ 4 πŸ“Œ 0

Really great supplemental post for dplyr 1.2.0 πŸ™‚

09.02.2026 20:03 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
tidyverse/dplyr dplyr: A grammar of data manipulation. Contribute to tidyverse/dplyr development by creating an account on GitHub.

Feel free to open an issue with the reprex github.com/tidyverse/dp...

06.02.2026 13:16 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

SORRY πŸ˜‚πŸ˜‚πŸ˜‚

06.02.2026 12:51 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

ahh so this is what Kamala's announcement was about

05.02.2026 18:47 πŸ‘ 72 πŸ” 6 πŸ’¬ 3 πŸ“Œ 0

In the end, we view `filter_out()` as a "variant" of the core verb `filter()`, just like how `slice_head()` is a "variant" of the core verb `slice()`. That seemed to require the smallest amount of mental adjustment, and doesn't require teachers to completely rewrite their presentations.

05.02.2026 18:46 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Also, I don't think I've ever heard someone say they "filter in these rows". I think it would have been `filter_for()` and `filter_out()`, i.e. "filter for these rows of interest" and "filter out those rows"

05.02.2026 18:46 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

We had a lot of discussion about alternate `filter()` names, but decided that the cons greatly outweigh any pros github.com/tidyverse/ti...

05.02.2026 18:46 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Etienne Bacher: Jarl 0.4.0 Find unreachable code, ignore diagnostics, show summary statistics of diagnostics, and more.

#rstats I'm very happy to announce Jarl 0.4.0!

Jarl is a very fast R linter, written in Rust. This release brings lots of improvements and fixes.

See the blog post: www.etiennebacher.com/posts/2026-0...

And the full changelog: jarl.etiennebacher.com/changelog

🧡 to highlight some features below

05.02.2026 13:30 πŸ‘ 26 πŸ” 10 πŸ’¬ 3 πŸ“Œ 2

If they'd only done half these changes it already would've been a huge boost… This really is an amazing update.

05.02.2026 02:40 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

literally lifechanging as a case_when addict

05.02.2026 02:09 πŸ‘ 10 πŸ” 2 πŸ’¬ 2 πŸ“Œ 0