Эта строка использует .
тремя различными способами.
[1] [2] [3]
aggregate(. ~ cyl, data = ., FUN = . %>% mean %>% round(2))
Вообще говоря, вы передаете значение из конвейера в вашу функцию в определенном месте с .
, но есть некоторые исключения,Единственным исключением является случай, когда .
находится в формуле.~
используется для создания формул в R. Трубка не изменит смысла формулы, поэтому она ведет себя так, как если бы она не выходила.Например,
aggregate(. ~ cyl, data=mydata)
И это только потому, что aggregate
требует формулы как с левой, так и с правой стороны.Таким образом, .
в [1]
просто означает «все остальные столбцы в наборе данных».Это использование никак не связано с magrittr.
.
в [2]
- это значение, которое передается в качестве канала.Если у вас есть простой .
в качестве параметра функции, то там будет помещено значение.Таким образом, результат subset()
перейдет к параметру data=
.
Библиотека magrittr
также позволяет вам определять анонимные функции с помощью переменной .
.Если у вас есть цепочка, которая начинается с .
, она рассматривается как функция.поэтому
. %>% mean %>% round(2)
совпадает с
function(x) round(mean(x), 2)
, поэтому вы просто создаете пользовательскую функцию с .
при [3]