默认R个人库位置为空

时间:2017-07-02 18:31:36

标签: r

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

  你想创建一个个人图书馆' null'将软件包安装到?

在RStudio和命令行R中都发生了这种情况。我卸载了r-base-core&通过apt-get重新安装r-baser-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. 上面的过程是推荐的,还是我应该做些不同的事情? (例如,沿着Setting R_LIBS & avoiding "Would you like to use a personal library instead?"。)
  2. 此机器上的未来R升级可能需要这两个步骤吗?

3 个答案:

答案 0 :(得分:6)

你很亲密。问题在于“注释掉”这些行,而不检查兼容性。如果您尝试在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,然后重新安装库。

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

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

以便R立即看到您的旧图书馆。

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

答案 1 :(得分:3)

在您的计算机上,您当前的库以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")设置旧库的路径,也可以将旧库复制并粘贴到新库中。

科林

答案 2 :(得分:0)

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

# nano /etc/R/Renviron

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

Etvoilà!

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