R语言概述

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所示。

你可能感兴趣的:(编程)