2011-12-14 48 views
6

he creado un paquete 'mypackage' (con un espacio de nombres 'mypackage' adjunto) En este paquete hay una función que puedo llamar ya sea condefinir una función en un espacio de nombres específicos

'myfunction' 

o

'mypackage::myfunction' 

Ahora deseo reemplazar myfunction por otra versión (actualizada).

que solía hacer

source(path) 

donde ruta es la ruta de un archivo en el que el 'mifuncion' actualizado se define

Ahora me mudé a R 2.14.x y este sistema no funciona porque al parecer R comprueba primero si hay una función dentro del mismo espacio de nombres, y si hay una, usa esta y no las otras.

Mi pregunta: ¿cómo puedo presionar la función actualizada para que esté en el mismo espacio de nombres que el paquete?

Respuesta

7

Ver ?assignInNamespace. Por ejemplo

assignInNamespace("myfunction", foo, "mypackage") 

asignará el objeto foo al objeto nombrado en "myfunction" espacio de nombres "mypackage". foo puede ser el objeto que desee, incluso myfunction, pero deberá tener cuidado para asegurarse de llamar al mypackage::myfunction si también tiene myfunction en el entorno/área de trabajo global.

Cuestiones relacionadas