Переопределить функцию, которая не экспортируется пространством имен в R
В R, кажется, есть способ переопределить функции в пространстве имен (см. Здесь). Мне интересно, возможно ли переопределить функцию из пакета, который не был экспортирован.
Например, ggplot_build()
экспортируется ggplot2
, Я могу переопределить его, используя следующий пример кода:
library(ggplot2)
g <- ggplot(mtcars, aes(x=mpg)) + geom_density()
my.ggplot_build <- function(plot) print(class(plot))
ggplot_build(g)
# Plot rendered
unlockBinding("ggplot_build", as.environment("package:ggplot2"))
assign("ggplot_build", my.ggplot_build, as.environment("package:ggplot2"))
lockBinding("ggplot_build", as.environment("package:ggplot2"))
ggplot_build(g)
# [1] "gg" "ggplot"
Однако есть ли способ переопределить print.ggplot()
функция, которая не экспортируется ggplot
?
Я могу получить доступ к неэкспортированным функциям через тройной :
такие как ggplot2:::print.ggplot()
, Есть ли способ переопределить эти функции?