Некоторая предыстория:
Мне нужно многократно использовать функцию HMR
из пакета HMR
. К сожалению, эта функция очень медленная. (HMR
является, по существу, подходящей функцией, которая должна быть максимально надежной, что является одной из причин отсутствия эффективности.) Функция HMR
вызывает функцию HMR::.HMR.fit1
, которая выполняет фактическое подгонку.
Использование Rprof
Я знаю, что основной проблемой эффективности является использование lsfit
, который получает много имен. Поэтому я изменил код .HMR.fit1
, чтобы вызвать функцию C, используемую lsfit
напрямую, без всех накладных расходов 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
, но я надеюсь, что есть более удобное решение.