我将我的Ubuntu 16.04机器更新为R 3.4.1。当安装第一个非必需的包(例如,lubridate)时,我收到了消息:
你想创建一个个人图书馆' null'将软件包安装到?
在RStudio和命令行R中都发生了这种情况。我卸载了r-base-core
&通过apt-get重新安装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'}
我有一个由两部分组成的问题:
答案 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()
。