Я хотел бы использовать пользовательскую функцию, определенную на объекте ggplot, с помощью трубы magrittr
. Однако я не могу передать объект ggplot в эту функцию.Как перенести объект ggplot?
Вот простой пример:
library(ggplot2)
library(magrittr)
my_plot_function <- function(plot) {
plot + geom_hline(yintercept = 3, linetype = 'dashed')
}
data(mtcars)
p <- mtcars %>%
ggplot() +
geom_point(aes(mpg, wt))
my_plot_function(p)
Было бы замечательно, если бы я мог бы использовать my_plot_function()
в цепи следующим образом:
mtcars %>%
ggplot() +
geom_point(aes(mpg, wt)) %>%
my_plot_function()
Однако он дает ошибку, как только слой передается на my_plot_function()
вместо самого сюжета. Как я могу передать сюжет с трубой?
Вы не можете изменить приоритет оператора в R, поэтому единственный способ сделать эту работу - поместить материал ggplotting между '%>%' в круглых скобках. Это, вероятно, не то, что вы хотите. –
@ KonradRudolph Вы имеете в виду 'mtcars%>% (ggplot() + geom_point (aes (mpg, wt)))%>% my_plot_function()'? Кажется, это не работает. – janosdivenyi
Я имел в виду '(mtcars%>% ggplot() + geom_point (aes (mpg, wt)))%>% my_plot_function()' (который работает), но описание в моем первом комментарии было неправильным и подразумевало бы код, который вы написал. –