Algunos antecedentes:Cambie la función interna de un paquete
Tengo que usar la función HMR
del paquete HMR
mucho. Desafortunadamente, esta función es muy lenta. (HMR
es esencialmente una función de ajuste, que está diseñada para ser lo más robusta posible, que es una de las razones de la falta de eficiencia.) La función HMR
llama a la función HMR::.HMR.fit1
, que hace la conexión real. Usando Rprof
Sé que el problema principal con respecto a la eficiencia es el uso de lsfit
, que se llama mucho. Por lo tanto, modifiqué el código de .HMR.fit1
para llamar directamente a la función C utilizada por lsfit
sin toda la sobrecarga de lsfit
, lo que debería dar como resultado una ganancia de velocidad considerable.
Ahora me gustaría sustituir HMR::.HMR.fit1
con mi función modificada y probar HMR
si da los mismos resultados y la velocidad que gano.
he tratado de hacer esto:
mod.fun <- function(<many args>) {
<a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun
Sin embargo, HMR::.HMR.fit1
no se modifica al hacer esto y al parecer HMR::HMR
no utiliza mi función de ajuste modificado. ¿Hay alguna manera de lograr lo que quiero sin construir el paquete desde la fuente, lo que no puedo hacer debido a las restricciones de derechos de usuario en mi computadora (Windows)?
En este momento, mi solución sería copiar el código de HMR::HMR
, pero espero que haya una solución más conveniente.
Si desea * agregar * nueva función en lugar de modificar la anterior, use esta solución: http://stackoverflow.com/a/3402159/684229 – TMS