由于termplotR中的函数包含一些令我烦恼的错误的奇怪代码,我想在我自己的测试代码中覆盖它,直到我找到一个更永久的解决方案.问题是mgcv包没有加载更改的功能.该mgcv包importFrom()在NAMESPACE文件中使用其名称空间中的stats包加载termplot .
我怎样才能说服mgcv使用改变的termplot?我试过了 :
unlockBinding("termplot", as.environment("package:stats"))
assign("termplot", my.termplot, as.environment("package:stats"))
lockBinding("termplot", as.environment("package:stats"))
Run Code Online (Sandbox Code Playgroud)
当应用于lm-objects时,这个工作并且使用改变的termplot.但是当使用mgcv包生成的gam-object时,这不起作用.如果我可以避免它,我真的不会从源代码构建stats包...
为了澄清,我也试过了
assignInNamespace("termplot", my.termplot, ns="stats")
assignInNamespace("termplot", my.termplot, ns="mgcv")
Run Code Online (Sandbox Code Playgroud)
在所有可能的组合中,在附加mgcv之后,在附加mgcv之后,我没有设法让它工作.
编辑:
我尝试了这里给出的所有选项(除了重建任何一个包),并且无法让它工作.对我来说简单的方法是使用包装函数.这个讨论可以在这里找到.感谢所有的提示.
一个可重复的例子:
my.termplot <- function (x) print("my new termplot")
unlockBinding("termplot", as.environment("package:stats"))
assignInNamespace("termplot", my.termplot, ns="stats", envir=as.environment("package:stats"))
assign("termplot", my.termplot, as.environment("package:stats"))
lockBinding("termplot", as.environment("package:stats"))
y <- 1:10
x <- 1:10
xx <- lm(y~x)
termplot(xx)
require(mgcv)
dat <- gamSim(1, n = 400, dist = "normal", scale = 2)
b <- gam(y ~ s(x0) + …Run Code Online (Sandbox Code Playgroud)