R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka和Robert Gentleman共同创立。它是属于GNU系统的一个自由、免费、源代码开放的软件,同时也是一个用于统计计算和统计制图的优秀工具。
一、R的发展历史
要说R,就不得不先来说一下S语言。1980年左右,AT&T贝尔实验室设计出一种在统计领域广泛使用的S语言。S语言是一种解释型语言,被设计用来进行数据探索、统计分析和作图。
S语言最初的实现版本主要是S-PLUS,它是一个基于S语言的商业软件,由MathSoft公司的统计科学部进一步完善。后来,Auckland大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。
R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,也就是说,通常用S语言编写的代码都可以不作修改地在R环境下运行。正因为如此,有人说R是S-PLUS的一个“克隆”。
二、R的主要功能
R既是一种软件,也可以说是一种语言,它R是一套完整的数据处理、计算和制图软件系统。
R的主要功能包括:数据存储和处理、数组运算、统计分析、统计制图等。此外,它提供了简便而强大的编程语言,可操纵数据的输入和输出,可实现分支、循环,也可实现用户自定义功能。
三、R的下载与安装
R的安装文件支持多个平台,即我们可以在Windows,Linux或Mac OS X上使用R。
R安装包的下载网址是:https://cran.r-project.org/。点击该链接,可以进入如图1所示的页面。
图1 R安装包的展示页面
从图1中我们可以看到,R的安装包支持Windows,Linux和Mac OS X三个平台。大家可以根据自己所使用的系统选择对应的安装包。
笔者使用的是Windows系统,因此点击图1中的“Download R for Windows”,可以看到如图2所示的页面。
图2 Windows平台下的R安装包概况
从图2中可以看到,R的安装包分为基础包(base)、贡献包(contrib)和工具包(Rtools)。对于初学者来说,使用基础包就足够了。当大家想要对R进行深入的学习的时候,再来下载贡献包(contrib)和工具包(Rtools)。
点击图2中的“base”,进入如图3所示的下载页面。
图3 R安装包的下载页面
点击图3中的“Download R 3.2.3 for Windows”即可下载R的基础安装包。
安装包下载好之后,双击即可开始安装。按照安装提示进行一步步的操作,即可将R安装到自己的电脑上,同时在桌面上创建快捷方式。
首次进入R软件的界面如图4所示。
图4 R软件的界面
从图4可以看出,R默认的命令提示符是“>”,它表示正在等待输入命令。
四、R的基本原理
在学习R之前,我们先来了解一下R的工作原理。
我们知道,像C、C++、Java这样的编程语言,我们在使用它们的时候,必须要构造一个完整的程序形式,单独输入一条命令是无法运行的,但R却不是这样的。因为R是一种解释型语言,而不是编译语言,这就意味着输入的命令能够直接被执行,而不需要先构成一个完整的程序形式。R的语法也是非常之简单和直观的。
在R运行的时候,所有变量、数据、函数及结果都以对象(objects)的形式存在计算机的活动内存中,并冠有相应的名字代号。我们可以通过用一些运算符(如算术、逻辑、比较等)和一些函数来对这些对象进行操作。
关于R中的函数,我们可用图5来形象地描述。
图5 R的函数
图5中的参量(arguments)可能是一些对象(如数据、方程、算式等),有些参量在函数里被预设为缺省值,用户则可按需对其作个别的修改,所以运行一个R函数可能不需要设定任何参量,原因是所有的参量都可以被默认为缺省值,当然也有可能该函数本身就不含任何参量。
R的具体工作原理如图6所示。
图6 R工作原理示意图
从图6中可以看出,在R中进行的所有操作都是针对存储在活动内存中的对象的。对数据、结果或图表的输入与输出都是通过对计算机硬盘中的文件读写而实现。用户通过输入一些命令调用函数,分析得出的结果可以被直接显示在屏幕上,也可以被存入某个对象或被写入硬盘。因为产生的结果本身就是一种对象,所以它们也能被视为数据并能像一般数据那样被处理分析。数据文件既可从本地磁盘读取也可通过网络传输从远程服务器端获得。
所有能使用的R函数都被包含在一个库(library)中,该库存放在磁盘的R_HOME/library目录下(R_HOME是安装R的地址,如笔者的库目录为:D:\Program Files\R\R-3.2.3\library)。这个目录下含有具有各种功能的包(packages),这些包也是按照目录的方式组织起来的。
在所有的包中,名为base的包可以算是R的核心,因为它内嵌了R语言中所有像数据读写与操作这些最基本的函数。在每个包内,都有一个子目录R,这个目录里又都含有一个与此包同名的文件(例如在包base中,有这样一个文件R_HOME/library/base/R/base),该文件正是存放所有函数的地方。