dplyr + magrittr + qplot =没有情节?

Tim*_*Tim 4 r ggplot2 dplyr magrittr

我想使用qplot(ggplot2),然后转发数据magrittr:

这有效:

mtcars %>% qplot(mpg, cyl, data=.)
Run Code Online (Sandbox Code Playgroud)

这会产生错误:

mtcars %>% qplot(mpg, cyl, data=.) %>% summarise(mean(mpg))
Run Code Online (Sandbox Code Playgroud)

这些只产生汇总统计:

mtcars %T>% qplot(mpg, cyl, data=.) %>% summarise(mean(mpg))
mtcars %>% {qplot(mpg, cyl, data=.); .} %>% summarise(mean(mpg))
mtcars %T>% {qplot(mpg, cyl, data=.)} %>% summarise(mean(mpg))
Run Code Online (Sandbox Code Playgroud)

问题是什么?我已经找到了这个解决方案,但是从附带的代码中可以看出它没有帮助.

had*_*ley 5

所有ggplot2函数都返回一个表示绘图的对象 - 要查看它需要打印它.这通常在您在控制台中工作时自动发生,但需要在函数或链中明确显示.

我能想出的最优雅的解决方案是:

library("ggplot2")
library("magrittr")
library("dplyr")

echo <- function(x) {
  print(x)
  x
}
mtcars %>% 
  {echo(qplot(mpg, cyl, data = .))} %>% 
  summarise(mean(mpg))
Run Code Online (Sandbox Code Playgroud)

似乎应该有更好的方法.