gpt4 book ai didi

r - 更改包的内部功能

转载 作者:行者123 更新时间:2023-12-03 23:23:28 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I override a non-visible function in the package namespace?

(1 个回答)


8年前关闭。




一些背景:

我必须使用功能 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不使用我修改过的拟合函数。有没有办法在不从源代码构建包的情况下实现我想要的,由于我的(Windows)计算机上的用户权限限制,我无法做到这一点?

现在,我的解决方案是复制 HMR::HMR 的代码,但我希望有更方便的解决方案。

最佳答案

尝试

?assignInNamespace

替换 .HMR.fit1HMR与您的版本一起打包。

可能重复:

How do I override a non-visible function in the package namespace?

关于r - 更改包的内部功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com