是否可以在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()再次发出以检查它是否已不再列出.
我倾向于使用littler在命令行上进行测试,以确保我得到一个新的R会话.你也可以这样做Rscript.
所以我的工作流程是
$ R CMD INSTALL Rliblinear/ ## alternatively, install from tarball
$ r -lRliblinear -e'someExpressionFromThePackage()'
Run Code Online (Sandbox Code Playgroud)
你也可以&&用一个干净的步骤和/或先用干净步骤包裹成一行.