0

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()。これらの関数をオーバーライドする方法はありますか?

4

0 に答える 0