[Rd] Time to revisit ifelse ?
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Tue Jul 8 13:25:18 CEST 2025
Rather than asking others to do this, why don't you create a tiny
package containing nothing other than an ifelse() replacement? I
wouldn't want to depend on dplyr or data.table just to get their
versions, but depending on your tiny package wouldn't be an issue.
Duncan Murdoch
On 2025-07-08 6:12 a.m., Antoine Fabri wrote:
> Dear r-devel,
>
> `ifelse()` has a lot of issues, and for these reasons it has been redone in
> `dplyr::if_else()` and `data.table::fifelse()`, which are both great. Yet
> it's an important base R function, it's really hard to program in base R
> without it and scores probably as high as it gets in the most_used *
> most_problematic metric.
>
> Obviously we can't change it without breaking a ton of code, but with all
> the experience we now have with it and the dplyr and data.table alternative
> maybe it might not be absurd to have a good alternative, say `if.else` in
> base R, that we can document on the same page and recommend for future use.
> It would require a common type in yes/no, not return logical() for all zero
> length input, work with dates, datetimes and factors, handle a na condition
> etc. The test suites of dplyr and data.table probably tell us everything
> about the edge cases we want to look at. Maybe the old ifelse could even
> warn when called from the top level, to incite us to work with the new one.
>
> It feels wrong to me to be stuck with ifelse() forever just because it has
> been like this for a long time. I'm sure some of you learnt your way around
> it but I work with R every day and after 10+ years of R it still bites me
> all the time, I'm probably not alone, at least chatGPT called it a
> "footgun", and we don't want that :).
>
> Thanks,
>
> Antoine
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list