[R] Pipe operator

Richard O'Keefe r@oknz @end|ng |rom gm@||@com
Wed Jan 4 01:50:11 CET 2023


"Does saving of variables speed up processing" no
"or save memory" no.
The manual is quite explicit:
> ?"|>"
...
Currently, pipe operations are implemented as syntax
transformations.  So an expression written as 'x |> f(y)' is
parsed as 'f(x, y)'.

Strictly speaking, using |> *doesn't* save any variables.
x |> f(y) |> g() |> h(1,z)
simply is h(g(f(x,y)),1,z) in which precisely the same
variables appear.  All that changes is the order in which
you write the function names; the order in which things are
evaluated does not change (the manual is explicit about
that too).

I personally find |> in R extremely confusing because
in x |> f(y) |> g() |> h(1,z)
it LOOKS as if there are calls to f(f), to g(), and to
h(1,z) and in Haskell or F# that would be true, but in
R the expressions f(y), g(), and h(1,z) are NOT
evaluated.  |> is and has to be special syntax with a
very restricted right-hand side.

Eliminating well-chosen variables can of course make
code much less readable.  It's funny how my code seems
prettier using |> but other people's code seems hopelessly
obscure...


On Wed, 4 Jan 2023 at 06:19, Sorkin, John <jsorkin using som.umaryland.edu> wrote:

> Tim,
>
> Thank you for your reply. I did not know about the |> operator. Do both
> %>% and |> work in base R?
>
> You suggested that the pipe operator can produce code with fewer
> variables. May I ask you to send a short example in which the pipe operator
> saves variables. Does said saving of variables speed up processing or
> result in less memory usage?
>
> Thank you,
> John
>
> ________________________________________
> From: Ebert,Timothy Aaron <tebert using ufl.edu>
> Sent: Tuesday, January 3, 2023 12:07 PM
> To: Sorkin, John; 'R-help Mailing List'
> Subject: RE: Pipe operator
>
> The pipe shortens code and results in fewer variables because you do not
> have to save intermediate steps. Once you get used to the idea it is
> useful. Note that there is also the |> pipe that is part of base R. As far
> as I know it does the same thing as %>%, or at my level of programing I
> have not encountered a difference.
>
> Tim
>
> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of Sorkin, John
> Sent: Tuesday, January 3, 2023 11:49 AM
> To: 'R-help Mailing List' <r-help using r-project.org>
> Subject: [R] Pipe operator
>
> [External Email]
>
> I am trying to understand the reason for existence of the pipe operator,
> %>%, and when one should use it. It is my understanding that the operator
> sends the file to the left of the operator to the function immediately to
> the right of the operator:
>
> c(1:10) %>% mean results in a value of 5.5 which is exactly the same as
> the result one obtains using the mean function directly, viz.
> mean(c(1:10)). What is the reason for having two syntactically different
> but semantically identical ways to call a function? Is one more efficient
> than the other? Does one use less memory than the other?
>
> P.S. Please forgive what might seem to be a question with an obvious
> answer. I am a programmer dinosaur. I have been programming for more than
> 50 years. When I started programming in the 1960s the only pipe one spoke
> about was a bong.
>
> John
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=05%7C01%7Cjsorkin%40som.umaryland.edu%7Cdc0d677272114cf6ba2808daedad0ec5%7C717009a620de461a88940312a395cac9%7C0%7C0%7C638083624783034240%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=7dDMSg%2FmPQ5xXP6zu6MWLmARdtdlrYWb3mXPZQj0La0%3D&reserved=0
> PLEASE do read the posting guide
> https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.r-project.org%2Fposting-guide.html&data=05%7C01%7Cjsorkin%40som.umaryland.edu%7Cdc0d677272114cf6ba2808daedad0ec5%7C717009a620de461a88940312a395cac9%7C0%7C0%7C638083624783034240%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=l5BZyjup%2Bho%2FijE1zQMxb5JE3F5VfKBZpUKHYW4k4Fg%3D&reserved=0
> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list