Tim*_*ron 9 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")
Run Code Online (Sandbox Code Playgroud)
这也很好
mtcars %>%
{ggplot() + geom_point(aes(cyl, mpg)) ; . } %>%
ggplot() + geom_point(aes(mpg, cyl))
Run Code Online (Sandbox Code Playgroud)
但是当我使用tee运算符时,如下所示,它会抛出"错误:ggplot2不知道如何处理类protoenvironment的数据".
mtcars %T>%
ggplot() + geom_point(aes(cyl, mpg)) %>%
ggplot() + geom_point(aes(mpg, cyl))
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么最后一段代码不起作用?
或
mtcars %T>%
{print(ggplot(.) + geom_point(aes(cyl, mpg)))} %>%
{ggplot(.) + geom_point(aes(mpg, cyl))}
Run Code Online (Sandbox Code Playgroud)
或放弃%T>%运算符并使用普通管道,将"%> T%"操作明确表示为此答案中建议的新功能
techo <- function(x){
print(x)
x
}
mtcars %>%
{techo( ggplot(.) + geom_point(aes(cyl, mpg)) )} %>%
{ggplot(.) + geom_point(aes(mpg, cyl))}
Run Code Online (Sandbox Code Playgroud)
正如TFlick指出的那样,%T>%运算符在这里不起作用的原因是因为操作的优先级:%any%之前完成+.
我认为你的问题与操作顺序有关.该+比强%T>%(根据运营商?Syntax的帮助页).ggplot在添加geom_point其他东西之前,你需要传入data =参数.我想你想要的
mtcars %T>%
{print(ggplot(.) + geom_point(aes(cyl, mpg)))} %>%
{ggplot(.) + geom_point(aes(mpg, cyl))}
Run Code Online (Sandbox Code Playgroud)
它使用功能"短手"表示法