我想用magrittr
的管道在ggplot對象上定義一個自定義函數。但是,我不能將一個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()'(可行),但是我的第一條評論中的描述是錯誤的,中寫道。 –