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

标签 r linux

我在 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 中可能不会总是很好地运行。 (我不打算检验这个理论,如果你能反驳这个说法,请反馈,我真的很感兴趣!)

顺便说一句:你对 .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"))

关于r - 更新 Ubuntu 后如何重新建立 R 项目的默认库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37680077/

相关文章:

linux - Bash 间接变量引用

r - 如何使用 grep 函数分隔 R 中具有通用名称的多个列?

r - 用户定义函数中出现错误 "object not found"

r - 在管道中使用bind_rows

c++ - CentOS 5 内核头文件

linux - 将 netdiscover 与修改后的屏幕 View 参数一起使用

删除 xts 中的 NA 列

r - 将条件变量传递给点阵函数中的 xyplot

Java inputevents 在 linux 中有一段时间没有触发(java/xorg 问题??)

linux - 我的modelsim字体太小看不清