默认的R个人库位置为空。

11

我将我的Ubuntu 16.04机器更新到了R 3.4.1。在安装第一个非必需的软件包(例如lubridate)时,我收到了以下消息:

 

您想创建一个个人库“ null”以安装软件包吗?

这在RStudio和命令行R中都发生了。我通过apt-get卸载了r-base-core并重新安装了r-base和r-base-dev,但仍然存在问题。

我注意到 /etc/R/ 目录包含四个瞬时文件,它们在安装过程中暂时存在,但在完成 apt-get install r-base r-base-dev 时已经消失了。我再次重新安装以快速抓取并粘贴这些文件到桌面。重新安装后,我将它们复制到 /etc/R/ 中:

~/Desktop/temp$ sudo cp repositories.dpkg-new /etc/R/repositories
~/Desktop/temp$ sudo cp Rprofile.site.dpkg-new /etc/R/Rprofile.site
~/Desktop/temp$ sudo cp ldpaths.dpkg-new /etc/R/ldpaths
~/Desktop/temp$ sudo cp Makeconf.dpkg-new /etc/R/Makeconf
第二步是取消下面的第二行注释,该行位于/etc/R/Renviron中。显然,这是由@dirk-eddelbuettel对r-base包装的最近更改。
# edd Jun 2017  Comment-out R_LIBS_USER
#R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
##R_LIBS_USER=${R_LIBS_USER-'~/Library/R/3.4/library'}

我有一个由两个部分组成的问题:

  1. 上述过程是否推荐,或者我应该采取不同的方法?(例如,类似于设置R_LIBS并避免“Would you like to use a personal library instead?”的提醒。)
  2. 在这台机器上,未来的R升级是否需要执行这两个步骤?

2
我刚刚取消了R_LIBS_USER的注释,这似乎已经足够了 - 我很想知道首选方法是什么。 - user20650
1
比较Ubuntu 17.04 Zesty默认软件包版本(3.3)Renviron和Cran(3.4.1)。看起来像是一个软件包问题。这可能没有被注意到,因为只影响新的安装。我建议取消注释,并编辑以保持相同的文件夹格式:以“3.4.1”结尾。R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4.1'} - Gustavo Garcia
3个回答

6
你很接近了。问题在于没有检查兼容性就将这些行“注释掉”。如果你尝试在REPL中手动安装库,例如使用以下命令,同样会出现相同的问题:
install.packages("survival")

与“null”不同,您会收到一个“NA”错误。
如果您希望在未来的R升级中避免麻烦,请按以下步骤操作:
1.将/etc/R/Renviron还原为包默认设置,以便下次升级时不会要求您的输入(或者只是被覆盖)。
2.在您的主目录下添加Renviron文件,例如$HOME/.Renviron,并添加以下内容:
R_LIBS_USER="${HOME}/R/${R_PLATFORM}-library/3.4.1/"
个人建议,在每次R升级后重新安装所有库。因此,我会将“3.4.1”更改为我拥有的新版本的“3.4.2”,然后重新安装库。
如果您不想重新安装库,则可以尝试完全删除版本子目录,例如:
R_LIBS_USER="${HOME}/R/${R_PLATFORM}-library/"
这样,R将立即看到您的旧库。
注意:很遗憾,我无法找到将R版本放入Renviron中的方法,但可以使用.Rprofile实现这一点(因为它可以包含R代码)。

3
在您的计算机上,当前的库名称以您的 R 版本命名。
例如,我的当前库是:
.libPaths()
[1] "/home/colin/R/x86_64-pc-linux-gnu-library/3.3"

我的当前R版本是3.3。

因此,每次更新R,您都会遇到这个库问题。请注意,您可以使用.libPaths(new = "path/to/your/lib")设置路径以使用旧的库或将旧库复制并粘贴到新库中。

Colin


我认为我理解路径构建(以及它反映了R的版本)。但是我不认为我曾经需要更改该设置(例如,在Renviron文件中)在我使用这台计算机的约3年时间内。 - wibeasley

0

我发现对我来说最合适的解决方案是编辑/etc/R/Renviron.site

# nano /etc/R/Renviron

取消注释设置R_LIBS_USER环境变量的行。

Et voilà!

我可以再次在R中使用library()require()install.packages()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接