问题 默认R个人库位置为空


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

你想创建一个个人库'null'来安装包吗?

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

我注意到了 /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并避免“您想要使用个人库吗?”。)
  2. 这台机器的未来R升级可能需要这两个步骤吗?

8772
2017-07-02 18:31


起源

我刚刚取消注释R_LIBS_USER似乎已经足够了 - 有兴趣了解首选方法是什么。 - user20650
比较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


答案:


你很亲密问题在于“评论”这些行,而不检查兼容性。如果您尝试在REPL中手动安装库,则会出现同样的问题,例如:

install.packages("survival")

区别在于您得到“NA”错误而不是“null”。

如果您想要最小的麻烦,未来R升级的解决方案:

  • 将/ etc / R / Renviron恢复为软件包默认值,以便下次升级时不会要求输入(或只是覆盖)

  • 在主目录中添加Renviron,例如 $HOME/.Renviron,具有以下内容:

R_LIBS_USER="${HOME}/R/${R_PLATFORM}-library/3.4.1/"

就个人而言,每次R升级我都会使用新版本重新安装所有库。所以我会修改它 3.4.1 同 3.4.2 或者我的新版本,然后重新安装库。

如果您不想重新安装库,可以尝试完全删除version子目录,例如:

R_LIBS_USER="${HOME}/R/${R_PLATFORM}-library/

这样你的旧图书馆将立即被R.

注意:遗憾的是,我无法找到将R版本放入Renviron的方法,但这可以使用.Rprofile来实现(因为它可以包含R代码)。


6
2017-07-03 13:26





在您的计算机上,您当前的库以R版本命名。

例如,我目前的lib是:

.libPaths()
[1] "/home/colin/R/x86_64-pc-linux-gnu-library/3.3"

因为我目前的R版本是3.3。

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

科林


3
2017-07-02 18:38



我想我理解路径构造(它反映了R的版本)。但我不相信我曾经需要在我使用这台计算机的〜3年内更改这些设置(例如,在Renviron文件中)。 - wibeasley


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

# nano /etc/R/Renviron

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

Etvoilà!

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


0
2017-07-06 16:35