On 07/12/2020 12:26 p.m., luke-tier...@uiowa.edu wrote:
I don't disagree in principle, but the reality is users want shortcuts
and as a result various packages, in particular tidyverse, have been
providing them. Mostly based on formulas, mostly with significant
issues since formulas weren't designed for this, and mostly
incompatible (tidyverse ones are compatible within tidyverse but not
with others). And of course none work in sapply or lapply. Providing a
shorthand in base may help to improve this. You don't have to use it
if you don't want to, and you can establish coding standards that
disallow it if you like.
Here's a suggestion to let people define their own shorthands and work with the current |> definition.

Define "as.call" as an S3 generic, with a default definition something like

as.call.default <- function(x, f, ...) f(x, ...)

so one could use

 x |> as.call(mean)

to get the same result as

 x |> mean()

or (if working in the tidyverse)

 x |> as.call(~ .x + 1)

to use a method to be provided by rlang or purrr to convert their shorthand into a call that the pipe can work with.

We already have the generic as.function, which could be used internally by lapply and sapply for the same sort of purpose. tidyverse has rlang::as_function, so they could pretty easily add methods for as.function if they wanted to allow people to use their shorthand in *apply functions.

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to