Переопределить функцию, которая не экспортируется пространством имен в 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(), Есть ли способ переопределить эти функции?

0 ответов

Другие вопросы по тегам