我正在RStudio中开发一个R包,并设置一个本地库来包含我所有的包。 在我的Ubuntu系统中安装了一些更新后,似乎我的R项目已经失去了本地库的轨道,无法加载与之关联的库。 如果我尝试生成和重新加载包
R CMD INSTALL --no-multiarch --with-keep.source mypackage
该程序试图安装到图书馆“/ usr / local / lib / R / site-library /
ERROR: No permission to install to directory '/usr/local/lib/R/site-library/'
据我记得,每当我重build我的包,该行指向我的本地目录,我所有的图书馆都是本地化的
installing to library '/home/user/R/x86_64-pc-linux-gnu-library/3.2'
很显然,R已经失去了跟项目和图书馆之间的联系。
我尝试重新包括path
.LibPaths("/home/user/R/x86_64-pc-linux-gnu-library/3.2")
但是,在我重新编译软件包后,程序在x86_64-pc-linux-gnu-library中创build了一个3.3目录。 从那里,它无法find与我的程序相关联的库,并引发另一个错误:
ERROR: dependencies '...', '...' are not available for package "mypackage"
有没有办法恢复程序的方式,所以我不必重新安装一切,从头开始?
默认情况下,R将主要次要版本号添加到库路径( ?.libPaths
)中,原因很简单,假定从3.2跳转到3.3导致效率或不兼容。 这意味着这个版本跳转需要新的安装包。
如果你忽略这一点,那么在3.2中组装的软件包在3.3中可能不会总是很好地运行。 (我不打算测试这个理论,如果你能反驳这个陈述,我真的很感兴趣!
顺便说一下:你对.libPaths
的调用似乎是可疑的:我不知道一个大写的L版本,在调用它时,你应该包括以前的路径(除非你真的想完全省略系统R库路径),例如:
.libPaths("/home/user/R/x86_64-pc-linux-gnu-library/3.2", .libPaths())
如果您选择这样做,那么您可能在其他软件包中发现的任何错误都可能是由于该不兼容性造成的,因此不一定要向开发人员报告。
另一个选择是将你3.2安装的所有软件包重新安装到你的3.3库路径中。 像这样的东西应该有助于自动化过程:
# to reinstall packages installed in R-3.2 subdir into R-3.3 install.packages(list.files(path = "~/R/x86_64-pc-linux-gnu-library/3.2"))