一些背景信息:
我必须经常使用来自HMR
包的函数HMR
。不幸的是,这个函数非常慢。(HMR
本质上是一个拟合函数,旨在尽可能健壮,这也是缺乏效率的原因之一。)函数HMR
调用函数HMR::.HMR.fit1
,它执行实际的拟合。
使用Rprof
,我知道效率方面的主要问题是使用了很多次lsfit
。因此,我修改了.HMR.fit1
的代码,直接调用lsfit
使用的C函数,避免了lsfit
的全部开销,这应该会显著提高速度。
现在,我想用我的修改后的函数替换HMR::.HMR.fit1
,并测试HMR
是否能给出相同的结果以及提高了多少速度。
我尝试了以下方法:
mod.fun <- function(<many args>) {
<a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun
然而,通过这样做,HMR::.HMR.fit1
并没有被修改,显然 HMR::HMR
也没有使用我修改后的拟合函数。有没有办法在不构建软件包的情况下实现我的要求?由于用户权限限制,我无法在计算机上进行构建软件包。
目前,我的解决方法是复制 HMR::HMR
的代码,但我希望有更方便的解决方法。