On Tue, 8 Jul 2025 at 17:23, Avraham Adler <avraham.ad...@gmail.com> wrote: > > On Tue, Jul 8, 2025 at 10:55 AM Josiah Parry <josiah.pa...@gmail.com> wrote: > > > > I think the point is not that there needs to be a smaller package for yet > > another if-else (https://xkcd.com/927/). It is that if the R-language, as a > > whole, had a performant if-else in the base of the language would benefit > > **everyone** such that a data.table or dplyr or gtools etc. alternative > > would not be necessary. > > While that may be true, Josiah, R Core's time is very limited. > Following Duncan's idea, if a small, simple package were created and > was proven to dominate the performance of standard ifelse without > causing any issues with the ten thousand plus packages in the R > environment, that would make R Core's decision much simpler, whether > or not to use the existing, proved performant code.
I might have missed it but the suggestion wasn't to replace the existing ifelse code. There are at least two existing proven performant code implementations. One on a package (data.table) with no additional dependencies. What would another implementation add? > > Asking R Core to > do the research and testing for something which currently _works_, > albeit not in the most efficient way possible, is pretty much a > non-starter. Do as much work as possible for R Core to have even a > possibility of consideration. For something similar, albeit much less > core (pun intended) to R's code, see this discussion [1] from June > 2012 on Kendall's tau, where the code already existed but was deemed > unimportant enough to add to base R. > > [1] https://stat.ethz.ch/pipermail/r-devel/2012-June/064351.html Yet recently it was suggested by one R-core member as a possible improvement for R suggesting that patches via bugzilla would be appreciated [1]. Of course, this doesn't mean it would be the case for this suggestion but seeing the interest of the community and how it can help many useRs I think exploring how to integrate such a if.else function on base R could be helpful for all (even if it is only added to R source later). [1]: https://github.com/r-devel/r-dev-day/issues/87 > > > Thanks, > > Avi > > > > > On Tue, Jul 8, 2025 at 5:09 AM Ben Bolker <bbol...@gmail.com> wrote: > > > > > I think Duncan's point is that R-core are (reasonably) very, very, > > > very conservative about adding things to base R. It would be useful to > > > the community, and would indeed further the discussion, to make a tiny > > > package containing just that function. (Even just copying it from some > > > other package might require some work to disentangle it from > > > dependencies: for example, a quick glance at dplyr::if_else shows that > > > it uses functions from rlang, vctrs, ...) > > > > > > I'd be happy to accept a pull request in `gtools`, which is a > > > zero-dependency (except base R) package for small utility functions ... > > > > > > cheers > > > Ben Bolker > > > > > > > > > On 7/8/25 07:36, Antoine Fabri wrote: > > > > It's not about asking others to do it really, that was a harsh > > > assumption. > > > > I'd be happy to propose a version if it helps, I'd be also very happy if > > > it > > > > were just a copy of if_else or fifelse (both MIT FWIW). > > > > It's a low level building block and it's broken, IMO it's way better to > > > > have it available and documented in base R and incite everyone to use > > > > it, > > > > so not only we don't suffer from it in the code we write, but also in > > > > the > > > > code we use or inherit from. > > > > > > > > Le mar. 8 juil. 2025 à 13:25, Duncan Murdoch <murdoch.dun...@gmail.com> > > > a > > > > écrit : > > > > > > > >> 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@r-project.org mailing list > > > >>> https://stat.ethz.ch/mailman/listinfo/r-devel > > > >> > > > >> > > > > > > > > [[alternative HTML version deleted]] > > > > > > > > ______________________________________________ > > > > R-devel@r-project.org mailing list > > > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > > > -- > > > Dr. Benjamin Bolker > > > Professor, Mathematics & Statistics and Biology, McMaster University > > > Director, School of Computational Science and Engineering > > > * E-mail is sent at my convenience; I don't expect replies outside of > > > working hours. > > > > > > ______________________________________________ > > > R-devel@r-project.org mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel