Alcuni retroscena:Cambiare funzione interna di un pacchetto
devo usare la funzione HMR
dal pacchetto HMR
molto. Sfortunatamente, questa funzione è molto lenta. (HMR
è essenzialmente una funzione di adattamento, che è progettata per essere il più robusta possibile, il che è uno dei motivi della mancanza di efficienza.) Funzione HMR
chiama la funzione HMR::.HMR.fit1
, che corrisponde al raccordo effettivo. Utilizzo di Rprof
So che il problema principale relativo all'efficienza è l'utilizzo di lsfit
, che viene chiamato molto. Pertanto, ho modificato il codice di .HMR.fit1
per chiamare direttamente la funzione C utilizzata da lsfit
senza l'overhead di lsfit
, che dovrebbe comportare un notevole aumento di velocità.
Ora mi piacerebbe sostituire HMR::.HMR.fit1
con la mia funzione modificata e testare HMR
se fornisce gli stessi risultati e quanta velocità guadagno.
Ho provato a fare questo:
mod.fun <- function(<many args>) {
<a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun
Tuttavia, HMR::.HMR.fit1
non è cambiato in questo modo e apparentemente HMR::HMR
non usa la mia funzione di raccordo modificato. C'è un modo per ottenere ciò che voglio senza creare il pacchetto dal sorgente, cosa che non posso fare a causa delle restrizioni sui diritti dell'utente sul mio computer (Windows)?
In questo momento, la mia soluzione sarebbe quella di copiare il codice di HMR::HMR
, ma spero che ci sia una soluzione più conveniente.
Se si desidera aggiungere * nuova funzione invece di modificare la vecchia, utilizzare questa soluzione: http://stackoverflow.com/a/3402159/684229 – TMS