使用已编译的扩展重新加载R包

Kev*_* L. 16 r package

是否可以在R会话中重新加载具有本机扩展名的R包?我正在开发Rliblinear,它使用了几个C函数.如果我对包中的R代码进行了更改,我可以重新安装并重新加载;

$ R CMD build Rliblinear
$ R CMD INSTALL Rliblinear
Run Code Online (Sandbox Code Playgroud)

然后在一个R壳里;

> detach("package:Rliblinear", unload=TRUE)
> library(Rliblinear)
Run Code Online (Sandbox Code Playgroud)

但是,C除非我重新启动R解释器,否则这些功能不会受到影响.有没有办法可以强制解释器重新加载共享对象Rliblinear.so

G. *_*eck 17

这将列出您加载的动态链接库:

library.dynam()
Run Code Online (Sandbox Code Playgroud)

这将Rliblinear.*在Rliblinear包中卸载.

library(Rliblinear)

# ... run package ...

detach("package:Rliblinear", unload = TRUE)
library.dynam.unload("Rliblinear", system.file(package = "Rliblinear"))
Run Code Online (Sandbox Code Playgroud)

您可以library.dynam()再次发出以检查它是否已不再列出.


Dir*_*tel 5

我倾向于使用littler在命令行上进行测试,以确保我得到一个新的R会话.你也可以这样做Rscript.

所以我的工作流程是

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

你也可以&&用一个干净的步骤和/或先用干净步骤包裹成一行.