R语言
R语言实操记录------R包无法安装,报错:Warning in system(cmd) : 'make' not found
文章目录
一、起因
R语言在包的安装上是真的方便,一句install.packages()就可以实现绝大多数包的安装。可惜,越简单的东西,报起错来也越是要命。
-
我在加载Seurat包时,报错提醒我缺少依赖包rgeos。
- 行呗,那就install.packages()呗。
-
开始报错 package 'rgeos' is not available for this version of R"。
一般原因 有两个:- 该版本的R数据库中不含该包(淘汰或改名了)
- 该软件包可用,但不适用于当前版本的R或操作系统类型(Unix/Windows)
- 解决办法:
- 用Bio conductor或者Github的安装方法安装,具体操作
- install.packages(pkgs, repos = "换个镜像源")
- 直接去官网下载压缩包,进行本地安装
-
再加载一遍Seurat包,开始报错:Error: package or namespace load failed for 'Seurat' in library.dynam(lib, package, package.lib): 没有这个DLL 'rgeos':是不是没有为此架构安装?好家伙,还是没安上。我怀疑了一下,是不是包的版本和软件版本有冲突,或者rgeos和Seurat两个包的版本起冲突了,更改了几次,还是报错。于是我就去看了下,安装包时输出的log。
-
报错Warning in system(cmd) : 'make' not found
-
具体错误:
r
** installing *source* package 'rgeos' ...
** 成功将'rgeos'程序包解包并MD5和检查
** using staged installation
** libs
Warning in system(cmd) : 'make' not found
ERROR: compilation failed for package 'rgeos'
* removing '.../R/4.2/library/rgeos'
Warning in install.packages :
installation of package 'rgeos' had non-zero exit status
- 这个make命令是RTools 中的,我更新了RTools,配置了make命令的环境变量就可以本地安装rgeos包了。
- Rtools:一个用于Windows操作系统的软件包,它为R编程语言提供了一套工具和依赖项,以便在Windows上进行编译和构建R软件包。 Rtools的安装和配置使得开发人员能够在Windows环境中更轻松地编译和构建R包,同时也方便了使用C/C++或Fortran等其他编程语言编写的扩展包的安装和使用。
- 下面是具体步骤
二、具体步骤
2.1、确认问题源
r
> Sys.which("make")
make
""
确认找不到make命令,make命令在RTools中
2.2、安装RTools
安装与当前R版本匹配的RTools版本,有两种方法(如果先前安装过RTools,先卸载RTools)
- 方法一:在线安装
r
install.packages("installr")
install.packages("stringr")###依赖包
library(stringr)
library(installr)
## 需要用installr安装RTools
install.Rtools()
- 方法二 :本地安装
去官网找与当前R版本匹配的安装包,除开需要将RTools安装在R(Rstudio)一个目录中外,其他一直点击下一步就行了。
2.3、与R(/Rstudio)绑定
假如忘记安装在同一目录下,或者R(/Rstudio)还是找不到make命令在哪的话,我们就需要将二者进行绑定,告诉它RTools的路径在哪。有两种方法。
- 方法一 :创建一个Renviron文件,指明Rtools主页的路径
在Rstudio中运行:(这里以RTools 4.3为例)
r
writeLines('PATH="${RTOOLS43_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
完成之后,重启一下Rstudio
- 方法二 :配置环境变量
直接配置环境变量,开机就读取这个目录。 - 这里以Windows10为例,在Windows设置中点击系统
- 选择关于 ---高级系统设置
- 选择环境变量
- 在编辑Path ,在Path中添加RTools的路径
- 如果先前有下载过RTools,需要检查并清除掉个人变量 和系统变量中旧版本的RTools的目录路径。
2.4、验证可行性
r
> Sys.which("make")
make
"c:\\rtools43\\usr\\bin\\make.exe"
install.packages("C:/Users/16748/Downloads/rgeos_0.6-4.tar.gz", repos = NULL, type = "source")
可以成功本地安装了。
三、疑惑
虽然解决了问题,可是我还是存在疑惑。在知道是RTools那边出问题后,我先是在应用程序中,找到了RTools,确定我安装了与Rstudio当前版本匹配的RTools版本,并且前不久才刚刚用过本地安装,理论上不应该会出错。想不通就干脆卸了重装好了,在卸载RTools时,发现应用程序中有它,但是卸载时提示找不到该程序,进入文件目录也确实找不到该包,重启电脑,重新加载还是一样的问题。emmm,好吧,就当它不存在吧,我换个版本吧。为了和新版本的RTools匹配,我又升级了Rstudio,R到最新版。RTools需要和R包的库放在一个目录下,方便加载,但是在安装新版时,提示当前目录下已安装过RTools,请换个目录。emmm,所以旧版的RTools真的存在啊,我翻来倒去都没找到。无奈,换个目录吧,在环境变量里,把这个目录加进去,也能成功加载。虽然最后还是解决了问题,但这种看不见的还解决不了的东西,真叫人心累。