在管道中使用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
(显示平均值)?
答案 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对象,因此我们将其应用于打印,但仍返回原始数据以获取图。