带有magrittr-tee运算符的多个GGP图
我正在试图弄清楚,当我将数据传递给ggplot命令时,为什么tee运算符%T>%不起作用 这个很好用带有magrittr-tee运算符的多个GGP图,r,ggplot2,magrittr,R,Ggplot2,Magrittr,我正在试图弄清楚,当我将数据传递给ggplot命令时,为什么tee运算符%T>%不起作用 这个很好用 library(ggplot2) library(dplyr) library(magrittr) mtcars %T>% qplot(x = cyl, y = mpg, data = ., geom = "point") %>% qplot(x = mpg, y = cyl, data = ., geom = "point") mtcars %>% {ggpl
library(ggplot2)
library(dplyr)
library(magrittr)
mtcars %T>%
qplot(x = cyl, y = mpg, data = ., geom = "point") %>%
qplot(x = mpg, y = cyl, data = ., geom = "point")
mtcars %>%
{ggplot() + geom_point(aes(cyl, mpg)) ; . } %>%
ggplot() + geom_point(aes(mpg, cyl))
这也很好
library(ggplot2)
library(dplyr)
library(magrittr)
mtcars %T>%
qplot(x = cyl, y = mpg, data = ., geom = "point") %>%
qplot(x = mpg, y = cyl, data = ., geom = "point")
mtcars %>%
{ggplot() + geom_point(aes(cyl, mpg)) ; . } %>%
ggplot() + geom_point(aes(mpg, cyl))
但当我使用tee操作符时,如下所示,它抛出“错误:ggplot2不知道如何处理类protoenvironment的数据”
有人能解释为什么这最后一段代码不起作用吗?我认为您的问题与操作顺序有关。
+
比%T>%
运算符强(根据?语法帮助页)。在添加geom_点之前,需要将data=参数传递到ggplot
,否则事情会变得一团糟。我想你想要
mtcars %T>%
{print(ggplot(.) + geom_point(aes(cyl, mpg)))} %>%
{ggplot(.) + geom_point(aes(mpg, cyl))}
它使用功能性的“速记”符号
mtcars %T>%
{print(ggplot(.) + geom_point(aes(cyl, mpg)))} %>%
{ggplot(.) + geom_point(aes(mpg, cyl))}
或者放弃%T>%
操作符,使用普通管道,并将“%>T%”操作作为新函数显式显示,如下所示
techo%
{techo(ggplot(.)+几何点(aes(cyl,mpg))}%>%
{ggplot(.)+geom_点(aes(mpg,cyl))}
如TFlick所述,%T>%运算符在此处不起作用的原因是操作的优先级:%any%
在+
之前完成。请注意,返回的ggplot对象是一个包含$data字段的列表。这是可以利用的。就我个人而言,我认为这种风格更干净:)
您可能需要将第一个ggplot调用包装为打印,以获得对图形设备的两个调用。
ggpass=function(pp){
print(pp)
return(pp$data)
}
mtcars %>%
{ggplot() + geom_point(aes(cyl, mpg))} %>% ggpass() %>%
{ggplot() + geom_point(aes(mpg, cyl))}