Знак плюс между ggplot2 и другой функцией (R)
Я пытаюсь получить этот пример:
ggplot (mpg, aes (displ, hwy)) + geom_point ()
Может кто-нибудь объяснить мне, что здесь происходит между этими двумя функциями?
Перегружает ли ggplot2 оператор "плюс"? Каков результат суммирования этих 2 и для чего он назначен? Это особенность R или ggplot2? Это что-то вроде трубы?
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
объекты).
Я думаю, что "труба" (комментарий @alistaire) является вводящей в заблуждение аналогией; это очень похоже на стиль стандартной группы Ops.