经常性遇到更新包/依赖之后,还是报错:
error: namespace 'package' 0.xx is being loaded, >=0.xx is required
查看已安装的包及其版本和路径
installed.packages()[,c('Package','Version','LibPath')]
原因是
install.packages()
默认包安装lib目录是.libPaths()
的第一个元素,Rstudio中的.libPaths()
默认第一个是用户目录,第二个是系统目录
> .libPaths()
[1] "C:/Users/sy_ta/Documents/R/win-library/3.6" "C:/Program Files/R/R-3.6.0/library"
而Rstudio默认的library()
目录是系统目录
所以如果不指定lib更新package,会只更新了用户目录下的package,但每次读取的还是系统目录的,导致无法更新成功。
网上查到的方法:
在R所在目录下的etc/Rprofile.site
文件末尾添加一句
.libPaths("C:/Program Files/R/R-3.6.0/library")
可以修改library路径,但只能解决直接启动R。启动Rstudio时.libPaths()
还是两个路径
最终解决办法
- 将环境变量
R_LIBS_USER
设置为所需库文件夹的文件路径的值,确保library首先显示在.libPaths()中。
在Windows中设置环境变量R_LIBS_USER,控制面板(系统属性 - 高级系统属性 -环境变量 - 用户变量),添加一个新的用户变量:R_LIBS_USER=C:/Program Files/R/R-3.6.0/library
。
这时候重新打开Rstudio输入.libPaths()
就只有一个路径了。
但是如果R安装在C盘,安装包时会提示目录没有写入权限,所以还需要下面这步。 - 更改文件夹写入修改权限:(如果R不是安装在C盘下此步骤可以忽略)
https://jingyan.baidu.com/article/8275fc86f2b7bb06a13cf605.html