Modificar librería de R

Si nos bajamos un paquete de R, veremos que el código fuente está formado por distintos archivos. Lo más habitual serán archivos con extensión .R, donde estarán definidas las funciones de R que nos aporta esa librería.

Modificar código R de una librería de R

Hacer cambios a esa librería será tan sencillo como modificar el fichero .R, hacer pruebas usando la función source(), y reinstalar la librería  (como veremos más adelante) cuando queramos hacer definitivos esos cambios.

Modificar código C de una librería de R

En otros casos, los paquetes de R tienen parte programada en otros lenguajes, como por ejemplo en C.

Vamos a ver cuál sería la forma de trabajar con ese código en C para modificarlo según nuestras necesidades.

Mientras estamos modificándolo, nos interesará hacerlo de una forma sencilla y rápida, que no nos obligue a reinstalar la librería a cada cambio que queramos hacer en el código en C.

Para hacer eso, R dispone de CMD SHLIB, que nos permite compilar ese código de C, generando un archivo que podemos cargar instantáneamente sobre R, desde donde podremos llamar a las funciones modificadas de C.

Vemos como usamos CMD SHLIB:

Esto nos generará un fichero con extensión .so (en mi caso, qADM.so).

Una vez tenemos el fichero .SO, podemos cargarlo directamente al R, para tener acceso a esas funciones de C. La forma de hacerlo es usando la función dyn.load(), desde la propia consola de R:

Una vez hecho esto, en nuestra sesión de R tendremos disponibles las funciones definidas en qADM3.c, con los cambios que hayamos aplicado.

Reinstalar librería para aplicar cambios

Una vez hemos hecho cambios en el código de la librería, ya sean en R o en C, y ya los hemos probado usando dyn.load(), tendremos que volver a instalar la librería para que estos cambios queden aplicados de forma definitiva sobre la librería.

Vamos a instalar un paquete que tenemos en una carpeta llamada qADM:

Una vez hecho esto, si ya tenemos una sesión de R abierta, y con la librería cargada (en su versión anterior), tendremos que volver a cargarla para actualizar así a la última versión instalada. Si no lo hacemos, seguiremos usando la versión anterior.

El usuario importa!

Recuerda que el usuario con que se ejecutan estos comandos importa, ya que R instalará esa librería en el repositorio por defecto de ese usuario.

En mi caso yo lo he hecho como root, y no con mi usuario. En el caso del root, se instala en el repositorio general del sistema. Por lo tanto, si te interesa que cualquier usuario del sistema pueda hacer uso de esa librería, tienes que hacer la instalación del paquete con el usuario root.

En mi caso, de hacerlo con mi propio usuario, el lugar donde instala el paquete es en  ~/R/i486-pc-linux-gnu-library/3.1/qADM/libs.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *