R语言基础指令和并行算法初识(上篇)

本文介绍了R语言的基本指令,包括向量、矩阵、数据框、列表的创建与操作,以及数学函数、文件指令和结构指令的使用。此外,文章还探讨了R语言的并行算法,如lapply、sapply等函数的高效批量处理,并对比了传统lapply与parallel包的性能差异。最后,简述了R语言中的遗传算法原理及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值