Sign in

Lorenzo Gaborini

@lgaborini.bsky.social
31 followers 107 following 81 posts

Lausanne based 🇨🇭 - Senior Data Analyst @IntTestAgency - PhD Forensic Science @unil - MSc Mathematical Engineering @polimi ®🐍🏃‍♀️⛷🚲🥐🍽

PostsRepliesMedia
Lorenzo Gaborini @lgaborini.bsky.social · 13/10/2026
Just a few functions away from geom_avocado() and {ggavocado}!
000
Lorenzo Gaborini @lgaborini.bsky.social · 05/10/2026
It's far less surprising if you consider that dplyr::select(..., 1) is old school but makes perfect sense (they have both tidyselect semantics)
000
Lorenzo Gaborini @lgaborini.bsky.social · 25/09/2026
Up next: nested sheets!
0110
Lorenzo Gaborini @lgaborini.bsky.social · 07/08/2026
My guess is that stringi::stri_enc_toutf8() does not actually declare the encoding as required by base R functions. cran.r-project.org/web/packages... It's probably worthy to stay in the stringi world since encoding functionalities are more advanced...
111
Lorenzo Gaborini @lgaborini.bsky.social · 05/08/2026
Today's best forgotten R function: readr::type_convert() The middle ground between watching {readr} explode on out-of-spec CSVs, and reading everything as a character.
000
Lorenzo Gaborini @lgaborini.bsky.social · 04/08/2026
ry looks so powerful! Are you planning to create a Positron/Zed/VS Code extension?
110
Lorenzo Gaborini @lgaborini.bsky.social · 23/07/2026
It became a woodwinds plot
020
Lorenzo Gaborini @lgaborini.bsky.social · 09/07/2026
On the verge of madness to understand why emojis were not showing up in plots in a {pagedown} report (custom format), in a {targets} pipeline launched via a Shiny app, in a Docker container (SVG/PNG devices). 3 weeks later: found out that Ubuntu has poor support for Noto Color Emoji. #rstats
010
Lorenzo Gaborini @lgaborini.bsky.social · 27/06/2026
So I'm not the only one then
130
Lorenzo Gaborini @lgaborini.bsky.social · 22/05/2026
I'm not hallucinating then!
100
Lorenzo Gaborini @lgaborini.bsky.social · 14/05/2026
You can just do cut(data, breaks = Scale), the result will be a factor with Likert-like levels. Tweak breaks and cut() parameters to control for closed intervals, etc.
110
Lorenzo Gaborini @lgaborini.bsky.social · 11/05/2026
LLM-assisted data analysis also interestingly fails when interpreting mislabeled plots: posit.co/blog/llm-plo...
posit.co
LLMs interpret plots well, until expectations interfere
We find that LLMs prioritize their internal expectations over conflicting visual evidence.
021
Lorenzo Gaborini @lgaborini.bsky.social · 29/04/2026
FPS Logo
000
Lorenzo Gaborini @lgaborini.bsky.social · 22/04/2026
You don't need Claude Code if you have Angine de Poitrine 🔺
000
Lorenzo Gaborini @lgaborini.bsky.social · 16/04/2026
You can also use the "Console: Execute Code Without Advancing)" shortcut (or Expand Selection up to the brackets { }, then the shortcut)
000
Lorenzo Gaborini @lgaborini.bsky.social · 14/04/2026
One step closer to quarto-wordart!
120
Lorenzo Gaborini @lgaborini.bsky.social · 14/04/2026
Every time I read about RNGs, the examples of RNG attacks are based on older implementations or plain seed recovery. Are Mersenne Twisters still that vulnerable to have a desire for true randomness in most (not infosec) tasks?
000
Lorenzo Gaborini @lgaborini.bsky.social · 08/04/2026
Seeing recent progress, an anti-pope will be likely based at the CERN
010
Lorenzo Gaborini @lgaborini.bsky.social · 08/04/2026
Straight out from Power Query! (sorry)
010
Reposted by Lorenzo Gaborini
Minas Karamanis @minaskar.bsky.social · 30/03/2026
Hey, I wrote a thing about AI in astrophysics ergosphere.blog/posts/the-ma...
ergosphere.blog
The machines are fine. I'm worried about us.
On AI agents, grunt work, and the part of science that isn't replaceable.
1101781531
Lorenzo Gaborini @lgaborini.bsky.social · 02/04/2026
▲
000
Lorenzo Gaborini @lgaborini.bsky.social · 30/03/2026
Now they're EVERYWHERE on my feed
100
Lorenzo Gaborini @lgaborini.bsky.social · 20/03/2026
The home page tab is empty, but if you search by hashtag and sort by latest, the posts pop up again
130
Lorenzo Gaborini @lgaborini.bsky.social · 07/03/2026
Live, laugh, lapply
040
Lorenzo Gaborini @lgaborini.bsky.social · 26/02/2026
Until they decide that giving you admin permissions, API keys, cloud infrastructure etc. is too much for your role
020
Lorenzo Gaborini @lgaborini.bsky.social · 10/02/2026
A wild `separate_wider_delim()` appears 🙌
010
Lorenzo Gaborini @lgaborini.bsky.social · 31/01/2026
I agree, not to mention English not being one's own L1 (and I'm willing to bet there are even differences among native speakers)
000
Lorenzo Gaborini @lgaborini.bsky.social · 30/01/2026
Normally load_all() is enough to load the dev help (very rarely it doesn't refresh). Is the .Rd there? Maybe try reloading the session?
000
Lorenzo Gaborini @lgaborini.bsky.social · 22/01/2026
The different time scales are really misleading. Cycling seems to be most protective at 2 MET·hours per week. At a light commuting pace (MET=4), this is 30 minutes per week (5 minutes per day). You do not even warm up! And zero benefits at 10 MET·hours per week (2.5 hours per week).
000
Lorenzo Gaborini @lgaborini.bsky.social · 14/01/2026
Yes, I had the habit to click on the active icon without using the keyboard But I like the new position, I'll get used to it!
010
Lorenzo Gaborini @lgaborini.bsky.social · 13/01/2026
But then you can't hide the activity bar by clicking on the active tab :(
100
Lorenzo Gaborini @lgaborini.bsky.social · 01/01/2026
Honestly I've never had issues using R + RStudio on Windows: this as long as you have RTools installed, and you're not installing non-CRAN packages that require compilation
010
Lorenzo Gaborini @lgaborini.bsky.social · 06/12/2025
What's different? The backend (knitr/pandoc) is the same, and you should also be able to change the HTML template in case it lacks metadata. Or maybe also writing a Lua filter to preprocess your Qmd for those extreme cases...
100
Lorenzo Gaborini @lgaborini.bsky.social · 05/12/2025
Not that new, but I'd say ggiraph: it's magic! It takes a ggplot2 and adds SVG + Shiny interactivity to the grobs almost for free. If only there were some extension mechanism...
120
Lorenzo Gaborini @lgaborini.bsky.social · 23/11/2025
Will it just become `verse`?
110
Lorenzo Gaborini @lgaborini.bsky.social · 23/11/2025
Yes officially with the recent {quarto} package: cran.r-project.org/web/packages... And unofficially you can use that syntax under knitr. (And the !expr syntax in code chunk options.)
050
Lorenzo Gaborini @lgaborini.bsky.social · 21/11/2025
Wow! Yet another awesome tool with Rust-awesomeness ✨ it's SO pleasant to work in a snappy environment!
020
Lorenzo Gaborini @lgaborini.bsky.social · 17/11/2025
I have a dream: template strings in base R!
010
Lorenzo Gaborini @lgaborini.bsky.social · 07/11/2025
Just explicitly call utils::data(), do not prefix yours
120
Lorenzo Gaborini @lgaborini.bsky.social · 05/11/2025
I can move the .venv outside (UV_PROJECT_ENVIRONMENT) but this is not standard and not well recognized by Positron.
010
Lorenzo Gaborini @lgaborini.bsky.social · 05/11/2025
uv is generally fine (new releases take a while to get whitelisted — same as Positron, ark, ...). But most other packages are dead: dbt, airflow, flask, csvkit, pip, sometimes Python. (Plus Onedrive doesn't support symlinks, the .venv gets actually filled by the library.)
110
Lorenzo Gaborini @lgaborini.bsky.social · 05/11/2025
Still, Python ships lots of executables, and Windows Defender is not happy. So uv is still unusable since I can't add an exception for each project. And the maintainer refuses to use a centralized library: {renv} does it better!
210
Reposted by Lorenzo Gaborini
Darren Dahly @statsepi.bsky.social · 01/11/2025
I'm increasingly proud to have written and published things before LLMs existed.
5876
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
5. Layers can have names github.com/tidyverse/gg...
github.com
Layers have names by teunbrand · Pull Request #5967 · tidyverse/ggplot2
This PR aims to fix #4066. Briefly, it sets names for the layers part of a plot that should be able to uniquely identify a layer. They're specified in the params argument to layer() and default...
040
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
4. New argument labs(dictionary) to label based on variable name rather than based on aesthetic (@teunbrand, #5178) AKA: more awesomeness just like scales::label_dictionary()! github.com/tidyverse/gg...
github.com
Label dictionary by teunbrand · Pull Request #6077 · tidyverse/ggplot2
This PR aims to fix #5178. Briefly, it adds labs(dict) that allows one to use a data-dictionary to label a plot based on variable names (rather than aesthetics). Let's just jump into examples. ...
120
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
3. New layer(layout) argument to interact with facets (@teunbrand, #3062) AKA: repeat a layer in every facet without messing with data github.com/tidyverse/gg...
github.com
Layer parameter controlling facet layout by teunbrand · Pull Request #6336 · tidyverse/ggplot2
This PR aims to (eventually) fix #3062. Briefly, it adds a layer(layout) argument to control how data is assigned to panels. Currently only layout = "fixed" is implemented, which repeats ...
110
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
2. New stat: stat_manual() for arbitrary computations (@teunbrand, #3501) github.com/tidyverse/gg...
github.com
Manual stat by teunbrand · Pull Request #6103 · tidyverse/ggplot2
This PR aims to fix #3501 and replaces #6066. It improves upon #6066 by simplifying the stat to stat_manual(fun = identity). It really is a thin wrapper to essentially offer a way for a user to pro...
110
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
1. coord_*(expand) can now take a logical vector to control expansion at any side of the panel (top, right, bottom, left) github.com/tidyverse/gg...
github.com
Repurpose coord expansion by teunbrand · Pull Request #6027 · tidyverse/ggplot2
This PR aims to fix #6020. Briefly, it allows expand to take a length-4 logical vector for each of the positions (top, right, bottom, left). Alternatively, one could use a named vector too. devtool...
130
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
My top 5 ggplot2 4.0.0 updates (well hidden in the NEWS) and their usage: #rstats (there's so much to unpack!) 🙌
162
Lorenzo Gaborini @lgaborini.bsky.social · 22/10/2025
Luckily it's getting less and less necessary in R, empty arguments (trailing commas) are often supported within the tidyverse 🍻 And also in DuckDB SQL FYI
120