Путаница здесь может на самом деле происходить из двух мест.
Во-первых, да, синтаксис . %>% something()
создает «унарную» функцию, которая принимает один аргумент.Итак:
. %>% filter(Species == 'setosa')
эквивалентно
function(.) filter(., Species == 'setosa')
Вторая часть здесь заключается в том, что слои ggplot2
могут фактически принимать функцию в качестве аргумента data
.Например, ?geom_point
:
Данные, отображаемые в этом слое.Существует три варианта:
...
Функция будет вызываться с одним аргументом - данными графика.Возвращаемое значение должно быть data.frame и будет использоваться в качестве данных слоя.
Таким образом, функция, переданная в geom_point
, всегда будет применяться к данным графика по умолчанию.(то есть данные, определенные в ggplot()
).
Обратите внимание, что ваш связанный вопрос касается использования .
в funs()
, что не имеет прямого отношения к его использованию здесь.