使用magrittr T形三通%T>;%运算符创建错误

使用magrittr T形三通%T>;%运算符创建错误,r,ggplot2,dplyr,R,Ggplot2,Dplyr,我试图创建两个图:一个是整个数据集,另一个是按“站点”分组因子分割的平均图 以下是源数据: site.data <- structure(list(site = structure(c(1L, 1L, 1L, 1L,1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ALBEN", "ALDER", "AMERI"), class = "factor"), year = c(5L,

我试图创建两个图:一个是整个数据集,另一个是按“站点”分组因子分割的平均图

以下是源数据:

site.data <- structure(list(site = structure(c(1L, 1L, 1L, 1L,1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), 
.Label = c("ALBEN", "ALDER", "AMERI"), class = "factor"),  
year = c(5L, 10L, 20L, 50L, 100L, 200L, 500L, 5L, 10L, 20L, 50L, 100L, 200L, 500L, 5L, 10L, 20L, 50L, 100L, 200L),
peak = c(101529.6, 117483.4, 132960.9, 153251.2, 168647.8, 184153.6, 204866.5, 6561.3, 7897.1, 9208.1, 10949.3,12287.6, 13650.2, 15493.6, 43656.5, 51475.3, 58854.4, 68233.3, 75135.9, 81908.3)),
.Names = c("site", "year","peak"), class = "data.frame", row.names = c(NA, -20L))  
但我得到了这个错误信息: as.vector(x,模式)中出错:无法将“环境”类型强制为“任意”类型的向量

现在,如果我用常规的magrittr管道操作符替换tee操作符,并注释掉第一个ggplot行,那么至少我得到了第二个ggplot,如下所示:

site.data %>%                                 
   #   ggplot(aes(year, peak, color = site)) + geom_line() + geom_point(size = 6)   %>%
group_by(site) %>%
summarize(mean = mean(peak)) %>%
ggplot(aes(site, mean, color = site)) + geom_point(size = 6)

有什么建议吗?谢谢

在这种情况下,操作顺序很重要。
%%
运算符的绑定比
+
更紧密。所以当你说

site.data %T>% ggplot(aes(year, peak, color = site)) + geom_line() 
那跟

( site.data %T>% ggplot(aes(year, peak, color = site)) ) + geom_line() 
这基本上是在做什么

site.data + geom_line()
返回与您得到的错误相同的错误。您需要将所有ggplot图层添加/修改显式分组到一个代码块中。试一试

site.data %T>%     
{print(ggplot(., aes(year, peak, color = site)) + geom_line() + geom_point(size = 6))}  %>%
group_by(site) %>%  
summarize(mean = mean(peak)) %>%
{ggplot(., aes(site, mean, color = site)) + geom_point(size = 6)}

有关R中的操作顺序,请参见
?语法
帮助页。
site.data %T>%     
{print(ggplot(., aes(year, peak, color = site)) + geom_line() + geom_point(size = 6))}  %>%
group_by(site) %>%  
summarize(mean = mean(peak)) %>%
{ggplot(., aes(site, mean, color = site)) + geom_point(size = 6)}