Overview

最近在一台新的电脑上运行一个R脚本时,报了一个很奇怪的错误。因为类似的脚本已经运行了很多次,所以很快就可以确定是电脑的R环境不兼容引起的问题。

问题描述

脚本在运行时需要载入caret包,结果载入过程中报下面的错误:

Loading required package: gplots

Attaching package: ‘gplots’

The following object is masked from ‘package:stats’:

    lowess

Loading required package: methods
Warning message:
package ‘gplots’ was built under R version 3.2.4
Loading required package: lattice
Loading required package: ggplot2
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
  there is no package called ‘recipes’
In addition: Warning messages:
1: package ‘caret’ was built under R version 3.2.5
2: package ‘lattice’ was built under R version 3.2.5
3: package ‘ggplot2’ was built under R version 3.2.5
4: replacing previous import by ‘plyr::ddply’ when loading ‘caret’
Error: package or namespace load failed for ‘caret’
Execution halted

别被上面的信息迷惑了,里面出现了ggplot2lattice包,是因为这些包都是caret的依赖包。caret非常的大,有很多依赖包。看到上面的信息,第一时间会选择用install.packages("recipes")安装,但提示信息时recipes不存在。

解决方案

查阅了一些资料后,发现caret兼容的最低R语言版本为3.2.3,然后我看了下我的R语言版本:3.2.2...
R官网上,下载了一个3.3.3,安装之后,重新装了一下需要的包,一切正常。

小结

如果安装的环境太老,有的时候还是会有一些不兼容的问题。所以如果出现了一些重大的版本,最好还是要更新一下,因为很可能后面的包就开始基于新的版本开发了。虽然我也不喜欢追求最新的,但也别太旧...