安装和加载R程序包
目前已有很多精心设计、维护良好且广泛支持的与机器学习相关的R程序包。在我们要进行的案例研究中,涉及的程序包主要用于:处理空间数据、进行文本分析、分析网络拓扑等,还有些程序包用于与网络API进行交互,当然还有其他很多功能,不胜枚举。因此,我们的任务很大程度上会依赖内置在这些程序包的函数功能。
加载R程序包很简单。实现加载的两个函数是:library和require。两者之间存在细微差别,在本书中,主要差别是:后者会返回一个布尔值(TRUE或FALSE)来表示是否加载成功。例如,在第6章中,我们会用到tm程序包来分词。要加载该程序包,我们既可以用library也可以用require。在下面所举例子中,我们用library来加载tm包,用require来加载XML包,再用print函数来显示require函数的返回值。可以看到,返回的布尔值是“TRUE”,可见XML包加载成功了。
- library(tm)
- print(require(XML))
- #[1] TRUE
假如XML包还未安装成功,即require函数返回值为“FALSE”,那么我们在调用之前仍需先安装成功这个包。
注意: 如果你刚安装成功R环境,那么你还需要安装较多的程序包才能完成本书的所有案例研究。
在R环境中安装程序包有两种方法:可以用图形用户界面进行安装,也可以用R控制台中的install.packages函数来安装。考虑到本书目标读者的水平,我们在本书的案例研究中会全部采用R控制台进行交互,但还是有必要介绍一下怎么用图形用户界面安装程序包。在R应用程序的菜单栏上,找到Packages & Data→Package Installer(程序包→安装程序包),点击之后弹出如图1-4所示的窗口。从程序包资源库的下拉列表中选择CRAN(binaries)(CRAN(二进制))或者CRAN(sources)(CRAN(源代码)),点击Get List(获取列表)按钮,加载所有可安装的程序包,最新的程序包版本可以从CRAN (sources)(CRAN(源代码))资源库中获取。如果你的计算机上已经安装了所需的编译器,我们推荐用源代码安装。接着,选择要安装的包,然后点击Install Selected(安装所选包),即可安装。
相比而言,用install.packages函数来安装是一种更佳的方法,因为它在安装方式和安装路径上更为灵活。这种方法的主要优势之一就是既可以用本地的源代码,也可以用CRAN上的源代码来安装。虽然以下这种情况不太常见,但仍然有可能会需要。有时你可能要安装一些CRAN上还未发布的程序包,比如你要将程序包更新到测试版本,那么你必须用源代码进行安装:
- install.packages("tm", dependencies=TRUE)
- setwd("~/Downloads/")
- install.packages("RCurl_1.5-0.tar.gz", repos=NULL, type="source")
第一行代码中,我们用默认参数从CRAN上安装了tm程序包。tm程序包用于文本挖掘,在第3章将用它来对电子邮件文本进行分类。install.packages中一个很有用的参数是suggests,这个参数默认值是FALSE,如果设置为TRUE,就会在安装过程中通知install.packages函数下载并安装初始安装过程所依赖的程序包。为了得到最佳实践,我们推荐将此参数值一直设置为TRUE,当R应用程序上没有任何程序包的情况下更要如此。
同样还有另一种安装方法,那就是直接使用源代码的压缩文件进行安装。在上一个例子中,我们用作者网站上的源代码安装了RCurl程序包。用setwd函数确保R的工作路径已设置为保存源代码的目录,然后就可以简单地执行前面的命令从源代码安装了。注意,这里需要改动两个参数。首先,我们必须设置repos=NULL来告诉函数不要使用CRAN中任意一个资源库,然后要设置type=”source”来告诉函数使用源代码安装。
表1-2:本书中用到的程序包
前文已经提到过,在本书中我们会使用一些程序包。表1-2列出了本书的案例研究所用到的所有程序包,包括对其用途的简单介绍,以及查看每个包详细信息的链接。安装所需程序包的数量不少,为了加快安装过程,我们创建了一个简短的脚本来检查每个必需的程序包是否已安装,若没有安装,它会通过CRAN进行安装。要运行该脚本,先用setwd函数将工作目录设置为本章代码所在的文件夹,再执行source命令,如下所示:
- source("package_installer.R")
如果你还没有安装过程序包,系统可能要求你选择一个CRAN的库。一旦设置完成,脚本就开始运行,你就可以看到所有需要安装的程序包的安装进度。现在,我们就要用R开始机器学习之旅了!在我们开始案例分析之前,我们仍需要回顾一些常用的R相关的函数与操作。