magrittr点/句点(“。”)运算符在管道的最开始处会做什么?

时间:2018-11-22 18:30:43

标签: r ggplot2 magrittr

我不明白以下代码中的.在做什么或在哪里可以找到其文档:

library(tidyverse)

ggplot(iris) + 
  geom_point(
    aes(x=Sepal.Length, y=Sepal.Width), 
    data = . %>% filter(Species == 'setosa')
  )

这似乎与What does the dplyr period character "." reference?中描述的用法大不相同,在here中,.不在最左侧。

文档https://code.tutsplus.com/tutorials/getting-started-with-recyclerview-and-cardview-on-android--cms-23465只说

  

带有点(。)作为LHS的管道将创建一元函数。这是   用于定义聚合函数。

但这对我来说还不是很清楚,我希望获得更多信息。

1 个答案:

答案 0 :(得分:3)

这里的困惑实际上可能来自两个地方。

首先,是的,. %>% something()语法创建了一个带有一个参数的“一元”函数。所以:

. %>% filter(Species == 'setosa')

等同于

function(.) filter(., Species == 'setosa')

这里的第二部分是ggplot2层实际上可以将函数用作其data参数。来自?geom_point

  

要在此层中显示的数据。共有三个选项:

     

...

     

将使用单个参数(绘图数据)调用函数。返回值必须是data.frame,并将用作图层数据。

因此,传递给geom_point的函数将始终应用于默认绘图数据(即ggplot()中定义的数据)。

请注意,您链接的问题涉及.funs()的使用,与此处的使用没有直接关系。