Actually, base R already has a pipe fairly close to the one you describe: ->.;

        iris ->.; head(.) ->.; dim(.)
        # [1] 6 5

I've called it the Bizarro pipe ( 
http://www.win-vector.com/blog/2016/12/magrittrs-doppelganger/ 
<http://www.win-vector.com/blog/2016/12/magrittrs-doppelganger/> ), and for 
some reason we chickened out and didn't spend time on it in the dot pipe paper 
( https://journal.r-project.org/archive/2018/RJ-2018-042/index.html 
<https://journal.r-project.org/archive/2018/RJ-2018-042/index.html> ).

For documentation Bizarro pipe has the advantage that one can work out how it 
works from the application itself, with out reference to a defining function.

> On Oct 5, 2019, at 7:34 AM, Ant F <antoine.fa...@gmail.com> wrote:
> 
> Dear R-devel,
> 
> The most popular piping operator sits in the package `magrittr` and is used
> by a huge amount of users, and imported /reexported by more and more
> packages too.
> 
> Many workflows don't even make much sense without pipes nowadays, so the
> examples in the doc will use pipes, as do the README, vignettes etc. I
> believe base R could have a piping operator so packages can use a pipe in
> their code or doc and stay dependency free.
> 
> I don't suggest an operator based on complex heuristics, instead I suggest
> a very simple and fast one (>10 times than magrittr in my tests) :
> 
> `%.%` <- function (e1, e2) {
>  eval(substitute(e2), envir = list(. = e1), enclos = parent.frame())
> }
> 
> iris %.% head(.) %.% dim(.)
> #> [1] 6 5
> 
> The difference with magrittr is that the dots must all be explicit (which
> sits with the choice of the name), and that special magrittr features such
> as assignment in place and building functions with `. %>% head() %>% dim()`
> are not supported.
> 
> Edge cases are not surprising:
> 
> ```
> x <- "a"
> x %.% quote(.)
> #> .
> x %.% substitute(.)
> #> [1] "a"
> 
> f1 <- function(y) function() eval(quote(y))
> f2 <- x %.% f1(.)
> f2()
> #> [1] "a"
> ```
> 
> Looking forward for your thoughts on this,
> 
> Antoine
> 
>       [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

---------------
John Mount
http://www.win-vector.com/ <http://www.win-vector.com/> 
Our book: Practical Data Science with R 
https://www.manning.com/books/practical-data-science-with-r-second-edition 
<http://www.manning.com/zumel/>





        [[alternative HTML version deleted]]

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

Reply via email to