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