在ggplot之后在管道中使用dplyr函数

时间:2017-12-11 06:57:12

标签: r dataframe ggplot2 dplyr

在管道中使用ggplot后是否可以执行summarise?变量不是很重要,我只是为了探索目的而考虑变化。因此,我真的不想保存变量。

df %>% 
        mutate(change = t2 - t1) %>%
        ggplot(aes(x = change)) +
        geom_histogram() %>%
        summarise(mean_change = mean(change))

Error in UseMethod("summarise_") : no applicable method for 'summarise_' applied to 
an object of class "c('LayerInstance', 'Layer', 'ggproto')"

是否可以渲染ggplot输出并在同一个管道中执行summarise(显示平均值)?

2 个答案:

答案 0 :(得分:1)

我不知道这是否正是您正在寻找的,但您的问题让我想起了magittr中的T-pipe(dplyr和tidyverse的一部分),我在网上找到了" R For Data Science"在这里预订:http://r4ds.had.co.nz/pipes.html#other-tools-from-magrittr

使用这个T管道,你可以ggplot并继续总结,因为T-pipe不是返回ggplot对象而是返回传递给ggplot的对象。

答案 1 :(得分:0)

使用package ggfun可以起作用:

# devtools::install_github("moodymudskipper/ggfun")
library(tidyverse)
library(ggfun)
iris %>% 
  mutate(x = Sepal.Length * Sepal.Width) %>%
  ggplot(aes(x)) +
  geom_density() -
  as_mapper(~{print(summarise(.,mean_x = mean(x)));.})

-运算符用于在数据上应用函数,并且仍返回ggplot对象,因此我们将其应用于打印,但仍返回原始数据以获取图。