R では、名前空間内で関数をオーバーライドする方法があるようです (こちらを参照)。exportされていないパッケージから関数をオーバーライドすることは可能ですか?
たとえば、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()
。これらの関数をオーバーライドする方法はありますか?