hearted people who clicked in to see this question.I just started learning to use ggplot.
ggplot(mpg) aes(x = displ) |> ggplot(mpg)
The first command
mpg is passed to
ggplot as an argument to
data =, while the second command is of the same form, but why
mpg is passed as an argument to
mapping = instead of the incoming aes function as an argument to
The error goes like this:
It looks like
mpg is being pushed to the side. What is the logic here?
Thank you for your patience.
I try to search on google and asked my friends. But I can’t get an answer. Have I made some mistakes or is this some kind of feature of the R language?
The pipe passes its left hand side to the first unnamed argument of the right hand side. So
aes(x = displ) |> ggplot(mpg) is equivalent to
ggplot(aes(x = displ), mpg), which in turn is equivalent to
ggplot(data = aes(x = displ), mapping = mpg) since that’s the order of
If you want to get around this, you can explicitly pass
mpg to the
aes(x = displ) |> ggplot(data = mpg)
or explicitly pass your
aes() call to
mapping using the pipe placeholder (
aes(x = displ) |> ggplot(mpg, mapping = _)