如何在更新Ubuntu后重新建立R项目的默认库



我正在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/'

据我记忆所及,每当我重建包时,那一行都指向我的本地目录,在那里我所有的库都是本地的

installing to library ‘/home/user/R/x86_64-pc-linux-gnu-library/3.2’

很明显,R不知何故已经忘记了项目和库之间的联系。

我尝试用重新包含路径

.LibPaths("/home/user/R/x86_64-pc-linux-gnu-library/3.2") 

但是,就在我再次重建包之后,程序在x86_64-pc-linux-gnu-library中创建了一个3.3目录。从那里,它无法找到与我的程序相关的库,并抛出另一个错误:

ERROR: dependencies '...', '...' are not available for package "mypackage"

有没有办法把程序恢复到以前的样子,这样我就不必重新安装所有东西,从头开始了?

默认情况下,R将主要次要版本号添加到库路径(?.libPaths)是有充分理由的,假设从3.2跳到3.3引入了效率或不兼容。这意味着这个版本跳转需要新的软件包安装。

如果您忽略了这一点,在3.2中组装的软件包在3.3中可能并不总是很好地发挥作用。(我不打算测试这个理论,如果你能反驳这个说法,请反馈,我真的很感兴趣!)

BTW:你对.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"))

最新更新