Another option is https://github.com/hadley/ggplot1 🤣 Hadley
On Wed, Dec 9, 2020 at 1:24 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > > Looks like Sergio Oller took your ambitious approach: > https://github.com/zeehio/ggpipe. It hasn't been updated since 2017, so > there may be some new things in ggplot2 that aren't there yet. > > Duncan Murdoch > > On 09/12/2020 2:16 p.m., Greg Snow wrote: > > Since `+` is already a function we could do regular piping to change this > > code: > > > > mtcars %>% > > ggplot(aes(x=wt, y=mpg)) + > > geom_point() > > > > to this: > > > > mtcars %>% > > ggplot(aes(x=wt, y=mpg)) %>% > > `+`(geom_point()) > > > > Further we can write wrapper functions like: > > > > p_geom_point <- function(x,...) { > > x + geom_point(...) > > } > > > > The run the code like: > > > > mtcars %>% > > ggplot(aes(x=wt, y=mpg)) %>% > > p_geom_point() > > > > All three of the above give the same plot from what I can see, but I > > have not tested it with very many options beyond the above. > > > > A really ambitious person could create a new package with wrappers for > > all the ggplot2 functions that can come after the plus sign, then we > > could use pipes for everything. I don't know if there are any strange > > circumstances that would make this cause problems (it probably will > > slow things down slightly, but probably not enough for people to > > notice). > > > > On Sun, Dec 6, 2020 at 7:18 PM Avi Gross via R-devel > > <r-devel@r-project.org> wrote: > >> > >> Thanks, Duncan. That answers my question fairly definitively. > >> > >> Although it can be DONE it likely won't be for the reasons Hadley > >> mentioned until we get some other product that replaces it entirely. There > >> are some interesting work-arounds mentioned. > >> > >> I was thinking of one that has overhead but might be a pain. Hadley > >> mentioned a slight variant. The first argument to a function now is > >> expected to be the data argument. The second might be the mapping. Now if > >> the function is called with a new first argument that is a ggplot object, > >> it could be possible to test the type and if it is a ggplot object than > >> slide over carefully any additional matched arguments that were not > >> explicitly named. Not sure that is at all easy to do. > >> > >> Alternately, you can ask that when used in such a pipeline that the user > >> call all other arguments using names like data=whatever, > >> mapping=aes(whatever) so no other args need to be adjusted by position. > >> > >> But all this is academic and I concede will likely not be done. I can live > >> with the plus signs. > >> > >> > >> -----Original Message----- > >> From: Duncan Murdoch <murdoch.dun...@gmail.com> > >> Sent: Sunday, December 6, 2020 2:50 PM > >> To: Avi Gross <avigr...@verizon.net>; 'r-devel' <r-devel@r-project.org> > >> Subject: Re: [Rd] New pipe operator and gg plotz > >> > >> Hadley's answer (#7 here: > >> https://community.rstudio.com/t/why-cant-ggplot2-use/4372) makes it pretty > >> clear that he thinks it would have been nice now if he had made that > >> choice when ggplot2 came out, but it's not worth the effort now to change > >> it. > >> > >> Duncan Murdoch > >> > >> On 06/12/2020 2:34 p.m., Avi Gross via R-devel wrote: > >>> As someone who switches back and forth between using standard R methods > >>> and those of the tidyverse, depending on the problem, my mood and whether > >>> Jupiter aligns with Saturn in the new age of Aquarius, I have a question > >>> about the forthcoming built-in pipe. Will it motivate anyone to > >>> eventually change or enhance the ggplot functionality to have a version > >>> that gets rid of the odd use of the addition symbol? > >>> > >>> I mean I now sometimes have a pipeline that looks like: > >>> > >>> Data %>% > >>> Do_this %>% > >>> Do_that(whatever) %>% > >>> ggplot(...) + > >>> geom_whatever(...) + > >>> ... > >>> > >>> My understanding is this is a bit of a historical anomaly that might > >>> someday be modified back. > >>> > >>> As I understand it, the call to ggplot() creates a partially filled-in > >>> object that holds all kinds of useful info. The additional calls to > >>> geom_point() and so on will add/change that hidden object. Nothing much > >>> happens till the object is implicitly or explicitly given to print() > >>> which switches to the print function for objects of that type and creates > >>> a graph based on the contents of the object at that time. So, in theory, > >>> you could have a pipelined version of ggplot where the first function > >>> accepts something like a data.frame or tibble as the default first > >>> argument and at the end returns the object we have been describing. All > >>> additional functions would then accept such an object as the (hidden?) > >>> first argument and return the modified object. The final function in the > >>> pipe would either have the value captured in a variable for later use or > >>> print implicitly generating a graph. > >>> > >>> So the above silly example might become: > >>> > >>> Data %>% > >>> Do_this %>% > >>> Do_that(whatever) %>% > >>> ggplot(...) %>% > >>> geom_whatever(...) %>% > >>> ... > >>> > >>> Or, am I missing something here? > >>> > >>> The language and extensions such as are now in the tidyverse might be > >>> more streamlined and easier to read when using consistent notation. If we > >>> now build a reasonable version of the pipeline in, might we encourage > >>> other uses to gradually migrate back closer to the mainstream? > >>> > >>> -----Original Message----- > >>> From: R-devel <r-devel-boun...@r-project.org> On Behalf Of Rui > >>> Barradas > >>> Sent: Sunday, December 6, 2020 2:51 AM > >>> To: Gregory Warnes <g...@warnes.net>; Abby Spurdle > >>> <spurdl...@gmail.com> > >>> Cc: r-devel <r-devel@r-project.org> > >>> Subject: Re: [Rd] New pipe operator > >>> > >>> Hello, > >>> > >>> If Hilbert liked beer, I like "pipe". > >>> > >>> More seriously, a new addition like this one is going to cause problems > >>> yet unknown. But it's a good idea to have a pipe operator available. As > >>> someone used to magrittr's data pipelines, I will play with this base one > >>> before making up my mind. I don't expect its behavior to be exactly like > >>> magrittr "%>%" (and it's not). For the moment all I can say is that it is > >>> something R users are used to and that it now avoids loading a package. > >>> As for the new way to define anonymous functions, I am less sure. Too > >>> much syntatic sugar? Or am I finding the syntax ugly? > >>> > >>> Hope this helps, > >>> > >>> Rui Barradas > >>> > >>> > >>> Às 03:22 de 06/12/20, Gregory Warnes escreveu: > >>>> If we’re being mathematically pedantic, the “pipe” operator is > >>>> actually function composition > That being said, pipes are a simple > >>>> and well-known idiom. While being less > >>>> than mathematically exact, it seems a reasonable label for the (very > >>>> useful) behavior. > >>>> > >>>> On Sat, Dec 5, 2020 at 9:43 PM Abby Spurdle <spurdl...@gmail.com> wrote: > >>>> > >>>>>> This is a good addition > >>>>> > >>>>> I can't understand why so many people are calling this a "pipe". > >>>>> Pipes connect processes, via their I/O streams. > >>>>> Arguably, a more general interpretation would include sockets and files. > >>>>> > >>>>> https://en.wikipedia.org/wiki/Pipeline_(Unix) > >>>>> https://en.wikipedia.org/wiki/Named_pipe > >>>>> https://en.wikipedia.org/wiki/Anonymous_pipe > >>>>> > >>>>> As far as I can tell, the magrittr-like operators are functions (not > >>>>> pipes), with nonstandard syntax. > >>>>> This is not consistent with R's original design philosophy, building > >>>>> on C, Lisp and S, along with lots of *important* math and stats. > >>>>> > >>>>> It's possible that some parties are interested in creating a kind of > >>>>> "data pipeline". > >>>>> I'm interested in this myself, and I think we could discuss this more. > >>>>> But I'm not convinced the magrittr-like operators help to achieve > >>>>> this goal. > >>>>> Which, in my opinion, would require one to model programs as > >>>>> directed graphs, along with some degree of asynchronous input. > >>>>> > >>>>> Presumably, these operators will be added to R anyway, and (almost) > >>>>> no one will listen to me. > >>>>> > >>>>> So, I would like to make one suggestion: > >>>>> Is it possible for these operators to *not* be named: > >>>>> The R Pipe > >>>>> The S Pipe > >>>>> Or anything with a similar meaning. > >>>>> > >>>>> Maybe tidy pipe, or something else that links it to its proponents? > >>>>> > >>>>> ______________________________________________ > >>>>> 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 > >>> > >>> > >>> Scanned by McAfee and confirmed virus-free. > >>> Find out more here: https://bit.ly/2zCJMrO > >>> > >>> ______________________________________________ > >>> 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 -- http://hadley.nz ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel