一.R语言背景介绍
二. R语言基础指令
三. R语言并行算法
四. 计划打算
一.R语言背景介绍
1.2、起源:R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。
1.3、功能:R是一套完整的数据处理、计算和制图软件系统。其功能包括:
1)、数据存储和处理系统;
2)、数组运算工具(其向量、矩阵运算方面功能尤其强大);
3)、完整连贯的统计分析工具;
4)、优秀的统计制图功能;
5)、简便而强大的编程语言:
6)、可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能 贝尔实验室 。
1.4、特点:
1)、R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。
2)、R的原代码可自由下载使用,亦有已编译的执行档版本可以下载,可在多种平台下运行,包括UNIX、Windows和MacOS。 R主要是以命令行操作,同时有人开发了几种图形用户界面。
3)、R内建多种统计学及数字分析功能。因为S的血缘,R比其他统计学或数学专用的编程语言有更强的物件导向(面向对象程序设计)功能。
4)、R的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。
5)、虽然R主要用于统计分析或者开发统计相关的软体,但也有人用作矩阵计算。其分析速度可媲美GNU Octave甚至商业软件MATLAB。
6)、R的功能能够通过由用户撰写的套件(功能包)增强。
二. R语言基础指令
2.1、对象指令
R语言是一种面向对象的语言,所有的对象都有两个内在属性:元素类型和长度。 元素类型是对象内元素的基本类型,包括:数值(numeric),字符型(character),复数型(complex)、逻辑型(logical)、函数(function)等。
除了元素类型外,对象本身也有不同的“类型”,表示不同的数据结构。R中的对象类型主要包括:
向量(vector): 由一系列有序元素构成。
因子(factor):对同长的其他向量元素进行分类的向量对象。R 同时提供有序和无序因子。
数组(array):带有多个下标的类型相同的元素的集合
矩阵(matrix):矩阵仅仅是一个双下标的数组。R提供了一下函数专门处理二维数组(矩阵)。
数据框(data frame):和矩阵类似的一种结构。在数据框中,列可以是不同的对象。
列表(list):是一种泛化的向量。它没有要求所有元素是同一类型,许多时候就是向量和列表类型。列表为统计计算的结果返回提供了一种便利的方法。
向量(Vector):
例如一个从1到30的规则整数序列,可以这样产生:
x <- 1:30 这个结果向量x有30个元素。
函数seq可以生成如下的实数序列:
seq(1, 5, 0.5) [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 其中第一个数字表示序列的起点,第二个表示终点,第三个是生成序列的步长。
也可以这样使用:
seq(length=9, from=1, to=5) [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
还可以用函数c直接输入数值:
c(1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5) [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
如果想用键盘输入一些数据也是可以的,只需要直接使用默认选项 的scan函数:
z <- scan()
1: 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
10:
Read 9 items
z [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
数组(array):
一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的.
数组函数是array(),语法是:
array(dadta, dim)
其中data必须是同一类型的数据,dim是各维的长度组成的向量。
1、产生一个三维和四维数组。
例1:xx <- array(1:24, c(3, 4, 2)) #一个三维数组
例2:yy <- array(1:36, c(2, 3, 3, 2)) #一个四维数组
2、dim()函数可将向量转化成数组或矩阵。
例1:xx <- 1:24; dim(xx) <- c(3, 4, 2); xx #效果同array(1:24, c(3, 4, 2))
例2:zz <- 1:10; dim(zz) <- c(2, 5); zz #效果同matrix(1:10, 2, 5)
因子(Factor) :
一个因子不仅包括分类变量本身还包括变量不同的可能水 平
因子函数factor用下面的选项创建一个因子:
factor(x, levels = sort(unique(x), na.last = TRUE), labels = levels, exclude = NA, ordered = is.ordered(x))
levels 用来指定因子可能的水平(缺省值是向量x中互异的值);
labels 用来指定水平的名字;
exclude表示从向量x中剔除的水平值;
ordered是 一个逻辑型选项用来指定因子的水平是否有次序。
下面有一些例子:
factor(1:3)
[1] 1 2 3 19
Levels: 1 2 3
> factor(1:3, levels=1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
> factor(1:3, labels=c("A", "B", "C"))
[1] A B C
Levels: A B C
> factor(1:5, exclude=4)
[1] 1 2 3 NA 5
Levels: 1 2 3 5
矩阵(Matrix) :
一个矩阵实际上是有一个附加属性(维数dim)的向量, 维数即为一个长度为2的向量,用来指定矩阵的行数和列数。
一个矩阵可以用函数matrix来创建:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
选项byrow表示数据给出的值是要按列填充(缺省值)还是按行填充 (如果为TRUE)。可以通过选项dimnames给行列命名。
一些实例参考:
> matrix(data=5, nr=2, nc=2)
[,1] [,2]
[1,] 5 5
[2,] 5 5
matrix(1:6, 2, 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
matrix(1:6, 2, 3, byrow=TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
数据框(Data frame):
用函数data.frame来创建。
数据框中的向 量必须有相同的长度,如果其中有一个比其它的短,它将“循环”整数 次(以使得其长度与其它向量相同):
> x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
> data.frame(x, n)
x n
1 1 10
2 2 10
3 3 10
4 4 10
data.frame(x, M)
x m
1 1 10
2 2 35
3 3 10
4 4 35
要注意的一种情况是:
data.frame(x, y)
Error in data.frame(x, y) :
arguments imply differing number of rows: 4, 3
如果一个因子包含在一个数据框中,它必须和其中的向量有相同的长度。
列表(List) :
列表可以用list函数创建,方法与创建数据框类似。它对其中包含的对象没有什么限制。和data.frame()比较,缺省值没有给出对象的名称;用前面的向量x和y举例:
L1 <- list(x, y); L2 <- list(A=x, B=y)
L1
[[1]]
[1] 1 2 3 4
[[2]]
[1] 2 3 4
L2
A[1]1234