Плюс знак между ggplot2 и другой функцией (R)

Я пытаюсь получить этот пример:

ggplot (mpg, aes (смещение, hwy)) + geom_point()

Может кто-нибудь объяснить мне, что происходит между этими двумя функциями?

Перегружает ли ggplot2 оператор "плюс"? Что является результатом суммирования этих 2 и на что он назначен? Является ли это R-специфической особенностью, или ggplot2-specific? Это какая-то труба?

Ответ 1

Определение функции, которое @Richard Scriven ссылается на комментарий, определено в plot-construction.r, что может сделать его более ясным. Вам нужно будет пройти через источник, чтобы узнать, что делают эти две (невыполненные) функции (независимо от того, является ли LHS вызова объектом theme или ggplot), но имена должны дать вам довольно хорошую идею. Возвращаемое значение e1 изменяется с помощью "добавления" e2.

"+.gg" <- function(e1, e2) {
  # Get the name of what was passed in as e2, and pass along so that it
  # can be displayed in error messages
  e2name <- deparse(substitute(e2))

  if      (is.theme(e1))  add_theme(e1, e2, e2name)
  else if (is.ggplot(e1)) add_ggplot(e1, e2, e2name)
}

Итак, да, + перегружается для объектов, наследующих класс gg (все объекты ggplot2).

Я думаю, что "pipe" (комментарий @alistaire) является вводящей в заблуждение аналогией; это очень похоже на стиль стандартной группы Ops generic.