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),该文件正是存放全部函数的地方。
五、R的对象
在R中进行的全部操作都是针对存储在活动内存中的对象进行的。因此,对象在R中占领了核心的地位。
1.对象的命名规则
对象的名字必须是以一个字母(A-Z或a-z)开头,中间能够包括字母、数字(0-9)、点(.)及下划线(_)。
同一时候,R对象的名字是区分大写和小写的,所以像x和X就能够代表两个全然不同的对象。
2.对象的简单操作
(1)对象的赋值
一个对象能够通过赋值操作来产生。R语言中的赋值(“ssign”)符号通常是由一个尖括号与一个负号组成的箭头形标志。该符号能够是从左到右的方向。也能够相反。
比如。我们能够打开R软件的执行界面。在界面上为对象n赋值。
> n <- 15
> n
[1] 15
> 5 -> n
> n
[1] 5
执行结果行中的方括号里的数字1表示从n的第一个元素開始显示。我们能够看到。R中的对象能够直接使用,而不用像非常多编程语言那样,必须要先定义之后再使用。假设该对象已经存在,那么它曾经的值将会自己主动被新值冲掉(这点与大部分编程语言是相同的)。
(2)对象的大写和小写
之前说过,R对象的名字是区分大写和小写的,比如。我们能够为对象x和X赋不同的值。
> x <- 1
> X <- 10
> x
[1] 1
> X
[1] 10
(3)赋值方式的多样性
在R中。给对象赋值有多种形式,能够是直接赋一个数值,也能够是一个算式或一个函数的结果。
> n <- 10 + 2
> n
[1] 12
> n <- 3 + rnorm(1)
> n
[1] 3.819211
> (10 + 2) * 5
[1] 60
执行rnorm(1)将产生一个服从平均数为0、标准差为1的标准正态分布的随机变量。
我们也能够仅仅是输入函数或表达式而不把它的结果赋给某个对象,但这样在窗体中展示的结果将不会被保存到内存中。
(4)显示内存中的对象
在R中,要用分号(;)来隔开同一行中的不同命令语句。字符串类型的变量要用双引號(“”)括起来。
函数ls的功能是显示全部在内存中的对象,但仅仅会列出对象名。
> name <- "Carmen"; n1 <- 10; n2 <- 100; m <- 0.5
> ls()
[1] "A" "compar" "m" "M" "n" "N" "n1" "n2"
[9] "name" "x" "X" "z"
假设仅仅须要显示出在名称中带有某个指定字符的对象。则通过设定选项pattern(可简写为pat)来实现。
> ls(pat = "m")
[1] "compar" "m" "name"
假设进一步限为显示在名称中以某个字母开头的对象,则可:
> ls(pat = "^m")
[1] "m"
执行函数ls.str()将会展示内存中全部对象的具体信息。
> ls.str()
A : chr "Gomphotherium"
compar : logi TRUE
m : num 0.5
M : 'data.frame': 1 obs. of 3 variables:
$ n1: num 10
$ n2: num 100
$ m : num 0.5
n : num 3.82
N : num 2.1e+23
n1 : num 10
n2 : num 100
name : chr "Carmen"
x : num 1
X : num 10
z : cplx 0+1i
(5)删除对象
要在内存中删除某个对象。可利用函数rm。执行rm(x)将会删除对象x,执行rm(x,y)将会删除对象x和y,而执行rm(list=ls())则会删除内存中的全部对象。
当然,ls()函数中的一些选项相同也能够运用到rm中来。以选择的删除某些特定的对象,如rm(list=ls(pat=”^m”))。
3.对象的类别概览
如图7所看到的。