Что делает оператор magrittr точка / период ("."), Когда он находится в самом начале конвейера? - PullRequest
0 голосов
/ 22 ноября 2018

Я не понимаю, что делает . в следующем коде или где найти документацию для него:

library(tidyverse)

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

Похоже, что он ведет себя совершенно иначе, чем использование, описанное в Что означает символ периода dplyr "."ссылка? , где . не появляется в самой левой позиции.

Документы здесь говорят просто

конвейерс точкой (.) в качестве LHS создаст унарную функцию.Это используется для определения функции агрегатора.

, но мне это не совсем понятно, и я надеюсь получить дополнительную информацию.

1 Ответ

0 голосов
/ 22 ноября 2018

Путаница здесь может на самом деле происходить из двух мест.

Во-первых, да, синтаксис . %>% something() создает «унарную» функцию, которая принимает один аргумент.Итак:

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

эквивалентно

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

Вторая часть здесь заключается в том, что слои ggplot2 могут фактически принимать функцию в качестве аргумента data.Например, ?geom_point:

Данные, отображаемые в этом слое.Существует три варианта:

...

Функция будет вызываться с одним аргументом - данными графика.Возвращаемое значение должно быть data.frame и будет использоваться в качестве данных слоя.

Таким образом, функция, переданная в geom_point, всегда будет применяться к данным графика по умолчанию.(то есть данные, определенные в ggplot()).

Обратите внимание, что ваш связанный вопрос касается использования . в funs(), что не имеет прямого отношения к его использованию здесь.

...