Multiple ggplots with magrittr tee operator

ggplot2, magrittr, r

Solution

Either

mtcars %T>%
  {print(ggplot(.) + geom_point(aes(cyl, mpg)))} %>%
  {ggplot(.) + geom_point(aes(mpg, cyl))}

or abandon the `%T>%` operator and use an ordinary pipe with the "%>T%" operation made explicit as a new function as suggested in this answer

techo <- function(x){
    print(x)
    x
  }

mtcars %>%
  {techo( ggplot(.) + geom_point(aes(cyl, mpg)) )} %>%
  {ggplot(.) + geom_point(aes(mpg, cyl))}

As TFlick noted, the reason the %T>% operator doesn't work here is because of the precedence of operations: `%any%` is done before `+`.

Problem

I am trying to figure out why the tee operator, %T>%, does not work when I pass the data to a ggplot command. This works fine ``` library(ggplot2) library(dplyr) library(magrittr) mtcars %T>% qplot(x = cyl, y = mpg, data = ., geom = "point") %>% qplot(x = mpg, y = cyl, data = ., geom = "point") ``` And this also works fine ``` mtcars %>% {ggplot() + geom_point(aes(cyl, mpg)) ; . } %>% ggplot() + geom_point(aes(mpg, cyl)) ``` But when I use the tee operator, as below, it throws "Error: ggplot2 doesn't know how to deal with data of class protoenvironment". ``` mtcars %T>% ggplot() + geom_point(aes(cyl, mpg)) %>% ggplot() + geom_point(aes(mpg, cyl)) ``` Can anyone explain why this final piece of code does not work?

Original source

Related problems