一些背景:
我必须经常使用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
Run Code Online (Sandbox Code Playgroud)
但是,HMR::.HMR.fit1这样做不会改变,显然HMR::HMR不会使用我修改过的拟合函数.有没有办法实现我想要的,而无需从源代码构建软件包,由于我的(Windows)计算机上的用户权限限制,我无法做到这一点?
现在,我的解决方案是复制代码HMR::HMR,但我希望有一个更方便的解决方案.
Mat*_*wle 16
尝试
?assignInNamespace
Run Code Online (Sandbox Code Playgroud)
更换.HMR.fit1的HMR包装与您的版本.
可能重复:
| 归档时间: |
|
| 查看次数: |
16197 次 |
| 最近记录: |