Niektóre tła:Zmień funkcję wewnętrznego pakietu
muszę użyć funkcji HMR
z pakietu HMR
dużo. Niestety ta funkcja jest bardzo powolna. (HMR
jest zasadniczo funkcją dopasowania, która ma być tak silna, jak to możliwe, co jest jedną z przyczyn braku wydajności.) Funkcja HMR
wywołuje funkcję HMR::.HMR.fit1
, która dokonuje rzeczywistego dopasowania. Korzystanie z Rprof
Wiem, że głównym problemem związanym z wydajnością jest użycie lsfit
, które często się nazywane. W związku z tym zmodyfikowałem kod .HMR.fit1
, aby wywołać funkcję C używaną przez lsfit
bezpośrednio, bez całego obciążenia w postaci lsfit
, co powinno skutkować znacznym wzrostem prędkości.
Teraz chciałbym zastąpić HMR::.HMR.fit1
moją zmodyfikowaną funkcją i przetestować HMR
, jeśli daje takie same wyniki i ile zyskuję.
Próbowałem to zrobić:
mod.fun <- function(<many args>) {
<a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun
Jednak HMR::.HMR.fit1
nie zmienia się w ten sposób i widocznie HMR::HMR
nie używać zmodyfikowanej funkcji dopasowania. Czy istnieje sposób na osiągnięcie tego, czego chcę, bez budowania pakietu ze źródła, którego nie mogę zrobić z powodu ograniczeń praw użytkownika na moim komputerze (z systemem Windows)?
W tej chwili moim rozwiązaniem byłoby skopiowanie kodu HMR::HMR
, ale mam nadzieję, że jest wygodniejsze rozwiązanie.
Jeśli chcesz * dodać * nową funkcję zamiast modyfikować stare, użyj tego rozwiązania: http://stackoverflow.com/a/3402159/684229 – TMS