r - magrittr 点/句点(“.”)运算符在管道的最开始时会做什么?
问题描述
我不明白.
以下代码中的内容在做什么或在哪里可以找到它的文档:
library(tidyverse)
ggplot(iris) +
geom_point(
aes(x=Sepal.Length, y=Sepal.Width),
data = . %>% filter(Species == 'setosa')
)
这似乎与 dplyr 句点字符是什么“。”中描述的用法完全不同。参考?其中.
没有出现在最左侧的位置。
这里的文档只是说
带有点 (.) 作为 LHS 的管道将创建一元函数。这用于定义聚合器函数。
但这对我来说根本不清楚,我希望获得更多信息。
解决方案
这里的混乱实际上可能来自两个地方。
首先,是的,. %>% something()
语法创建了一个接受一个参数的“一元”函数。所以:
. %>% filter(Species == 'setosa')
相当于
function(.) filter(., Species == 'setosa')
这里的第二部分是ggplot2
层实际上可以将函数作为data
参数。来自例如?geom_point
:
要在该层中显示的数据。有三个选项:
...
将使用单个参数调用函数,即绘图数据。返回值必须是一个data.frame,并将用作图层数据。
因此,传递给的函数geom_point
将始终应用于默认绘图数据(即定义在 中的数据ggplot()
)。
请注意,您的链接问题涉及.
in的使用funs()
,这与其在此处的使用没有直接关系。
推荐阅读
- slurm - 有没有办法设置 slurm (slurm.conf) 以使用每个节点不相等的 cpu (和内存)?
- ruby-on-rails - 旅行后两个日期之间的Ruby gem timecop错误延迟
- virtualbox - 为什么有时我的 openmeetings 服务器实例从头开始运行
- image - SVG 内标签的 alt 标签
- css - 如何设置 ng2-date-picker 的样式
- cplex - 如何对除一个 CPLEX 之外的每个值求和
- javascript - 无法使用 puppeteer 滚动谷歌地图的左窗格
- sql-server - 通过检查数据集值获取记录
- html - text-area 不会发送到 mongodb ,但可以发送使用输入
- c# - 将 TResponse 转换为 IRequestPostProcessor 中的 Response 类