studio software science for data create r package

software - Recargar el paquete R con extensiones compiladas



r suite download (3)

Aquí hay una extensión de la respuesta del Sr. G. Grothendieck, si está incrustado en "yourpackage", se puede compilar de una vez desde la consola R:

reload <- function( path ){ detach("package:yourpackage", unload = TRUE) library.dynam.unload("yourpackage", system.file(package = "yourpackage")) path <- paste( "--vanilla CMD INSTALL ", path ) system2( ''R'', path ) require("yourpackage") }

entonces de R:

yourpackage :: reload (''/ home / me / yourpackage'')

¿Es posible volver a cargar un paquete R con extensiones nativas en una sesión R? Estoy desarrollando Rliblinear , que usa varias funciones C Si realizo un cambio en el código R en el paquete, solo puedo volver a instalar y recargar;

$ R CMD build Rliblinear $ R CMD INSTALL Rliblinear

y luego en una concha R ;

> detach("package:Rliblinear", unload=TRUE) > library(Rliblinear)

Sin embargo, las funciones de C no se ven afectadas a menos que reinicie el intérprete de R ¿Hay alguna manera de forzar al intérprete a que vuelva a cargar el objeto compartido, Rliblinear.so ?


Esto mostrará una lista de sus bibliotecas de enlaces dinámicos cargados:

library.dynam()

y esto descargará Rliblinear.* en el paquete Rliblinear.

library(Rliblinear) # ... run package ... detach("package:Rliblinear", unload = TRUE) library.dynam.unload("Rliblinear", system.file(package = "Rliblinear"))

Puede emitir library.dynam() nuevamente solo para verificar que ya no esté en la lista.


Tiendo a hacer mis pruebas en la línea de comandos con littler para asegurarme de que obtengo una sesión R nueva. También puedes hacer esto con Rscript .

Así que mi flujo de trabajo sería

$ R CMD INSTALL Rliblinear/ ## alternatively, install from tarball $ r -lRliblinear -e''someExpressionFromThePackage()''

que también puede envolver en una sola línea con && y / o preceder con un paso limpio.