R语言学习系列03数据结构I向量矩阵多维数组.docx
- 文档编号:30133125
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:9
- 大小:17.73KB
R语言学习系列03数据结构I向量矩阵多维数组.docx
《R语言学习系列03数据结构I向量矩阵多维数组.docx》由会员分享,可在线阅读,更多相关《R语言学习系列03数据结构I向量矩阵多维数组.docx(9页珍藏版)》请在冰豆网上搜索。
R语言学习系列03数据结构I向量矩阵多维数组
03.数据结构I—向量,矩阵,多维数组
一、向量(一维数据)
向量是R语言中最基本的数据类型,是以一维数组管理数据的一种对象类型,可以是数值型、字符型、逻辑值型、复数型。
注意:
同一向量不能混杂多种不同类型的数据。
1.创建向量
通过函数c()实现组合功能,例如
>x1<-c(2,3,5,7,10)
>x1
[1]235710
>x2<-c("a","b","c")
>x2
[1]"a""b""c"
2.向量索引
(1)下标索引(注意:
R中下标是从1开始的),例如
x1[1]——返回x1的第1个元素
x1[-1]——返回除第一个元素之外的所有元素
x1[c(2:
4)]——返回x1的第2至4个元素
x1[-c(2:
4)]——返回x1的除第2至4元素之外的所有元素
(2)名称索引
先给向量中的每个元素命名,再通过名称访问对应的元素:
>names(x1)<-c("two","three","five","seven","ten")
>x1[c("three","seven")]
threeseven
37
(3)which元素位置
通过函数which()返回逻辑向量中为TRUE的位置;
which.max(x1)返回向量x1中最大值所在的位置;
which.min(x1)返回向量x1中最小值所在的位置。
>x1<-c(2,3,5,7,10)
>x1[which(x1>3&x1<8)]
[1]57
>x1[which.max(x1)]
[1]10
(4)subset生成子集
检索向量中满足条件的元素,提取出来:
subset(x1,x1>3&x1<8)
[1]57
(5)match匹配
match(x1,x2)逐个检查向量x1中元素是否在向量x2中,若是则返回该元素,否则返回NA:
>x1<-c(2,3,5,7,10)
>x2=1:
4
>match(x1,x2)
[1]23NANANA
(6)%in%检查是否属于
x1%in%x2逐个判断向量x1中元素是否属于向量x2:
>x1%in%x2
[1]TRUETRUEFALSEFALSEFALSE
3.向量的编辑
对已创建向量进行增加或删除元素。
(1)增加元素
>x<-1:
5
>x
[1]12345
>x<-c(x,c(6,7,8))
>x
[1]12345678
x[10]=10
>x
[1]12345678NA10
length(x)
[1]10
(2)删除元素
>x=1:
8
>x
[1]12345678
>x<-x[-c(3,5)]
>x
[1]124678
>x<-x[-1]
>x
[1]24678
4.向量排序
函数sort(),基本格式:
sort(x,decreasing=FALSE,na.last=FALSE,...)
其中,x为排序对象(数值型或字符型);decreasing默认为FALSE即升序,TURE为降序;na.last默认为FALSE,若为TRUE,则将向量中的NA值放到序列末尾。
函数rank(),返回值是该向量中对应元素的“排名”。
函数order(),返回值是对应“排名”的元素所在向量中的位置,例如,
>x<-c(1,5,8,2,9,7,4)
>x
[1]1582974
>order(x)
[1]1472635
说明:
默认按升序,排名第2的元素在原向量的第4个位置。
函数rev(),将序列进行反转,即1,2,3变成3,2,1
5.创建等差序列
函数seq(),基本格式为:
seq(from=...,to=...,by=...,length.out=...,along.with=...)
其中,from设置首项(默认为1);to设置尾项;by设置等差值(默认为1或-1);length.out设置序列长度;along.with以该参数的长度作为序列长度。
根据需要设置某几个参数即可,seq(17)同seq(1,17)同1:
17
6.创建重复序列
函数rep(),基本格式为:
rep(x,times=...,length.out=...,each=...)
其中,x为要重复的序列;times设置序列重复次数;length.out设置产生的序列的长度;each设置每个元素分别重复的次数(默认为1)。
>x=1:
3
>x
[1]123
>rep(x,2)
[1]123123
>rep(x,each=2)
[1]112233
>rep(x,c(2,1,2))#按照规则重复序列中的各元素
[1]11233
>rep(x,each=2,length.out=4)
[1]1122
>rep(x,each=2,times=3)
[1]112233112233112233
二、矩阵(二维数据)
矩阵是二维数组,可以描述二维数据,也要求矩阵内各元素有相同的类型。
1.创建矩阵
函数matrix(),基本格式为:
matrix(x,nrow=...,ncol=...,byrow=...,dimnames=...)
其中,x为数据向量作为矩阵的元素;nrow设定行数;ncol设定列数;byrow设置是否按行填充,默认为FALSE(按列填充);dimnames用字符型向量表示矩阵的行名和列名。
>x<-1:
6
>x
[1]123456
>a<-matrix(x,nrow=3,ncol=2,byrow=T)
>a
[,1][,2]
[1,]12
[2,]34
[3,]56
>b<-matrix(x)
>b
[,1]
[1,]1
[2,]2
[3,]3
[4,]4
[5,]5
[6,]6
>dim(b)=c(3,2)
>b
[,1][,2]
[1,]14
[2,]25
[3,]36
>c<-matrix(x,nrow=3,ncol=2,byrow=F,dimnames=list(c("r1","r2","r3"),c("c1","c2")))
>c
c1c2
r114
r224
r336
函数as.vector(),可将矩阵转化为向量,元素按列读取。
>as.vector(c)
[1]123456
2.矩阵索引
a[i,j]——返回矩阵a的第i行,第j列的元素
a[i,]——返回矩阵a的第i行
a[,j]——返回矩阵a的第j列
a[c(i:
j),]——返回矩阵a的第i至第j行
a[,j]——返回矩阵a的第i行,第j列的元素
也可按名称索引:
c["r2","c1"]——返回矩阵c的第r2行,第c1列的元素2
3.矩阵的编辑
函数rbind(A,B),纵向合并(增加行),要求列数相同;
函数cbind(C,D),衡向合并(增加列),要求行数相同。
注意:
rbind(A,1)相当于给矩阵A增加一行“1”。
a[-1,],删除矩阵a的第一行
a[,-1],删除矩阵a的第一列
a[-c(2:
4),],删除矩阵a的第2至4行
4.矩阵的运算
+-*/——四则运算(要求矩阵维数相同)
colSums()——对矩阵的各列求和
rowSums()——对矩阵的各行求和
colMeans()——对矩阵的各列求均值
rowMeans()——对矩阵的各行求均值
t()——对矩阵转置
det()——返回方阵的行列式
crossprod()——返回两个矩阵的内积
outer()——返回矩阵的外积(叉积)
%*%——矩阵乘法(要求左阵的列数=右阵的行数)
diag()——取矩阵对角线元素生成对角矩阵,若对象是向量,则以该向量作为对角元素
solve()——返回逆矩阵(要求矩阵可逆)
eigen()——返回矩阵的特征值与特征向量
三、多维数组(高维数据)
数组与矩阵类似,是矩阵的扩展,维度≥3.也要求数组中各元素有相同的类型。
1.创建多维数组
函数array(),基本格式为:
array(x,dim=...,dimnames=...)
其中,x为数据向量作为多维数组的元素;dim设置多维数组各维度的维数;dimnames设置多维数组各维度的名称。
>x<-1:
30
>dim1<-c("A1","A2","A3")
>dim2<-c("B1","B2","B3","B4","B5")
>dim3<-c("C1","C2")
>a<-array(x,dim=c(3,5,2),dimnames=list(dim1,dim2,dim3))
>a
,C1
B1B2B3B4B5
A11471013
A22581114
A33691215
,C2
B1B2B3B4B5
A11619222528
A21720232629
A31821242730
2.多维数组索引
第3个维度姑且称为“页”。
a[2,4,2]——返回第2页,第2行,第4列的元素26
或按各维度名称索引
a["A2","B4","C2"]——同a[2,4,2]
a[,,2]——返回第2页
dim(a)——返回多维数组a的各维度的维数352
主要参考文献:
[1]张良均,谢佳标,杨坦,肖刚.R语言与数据挖掘.机械工业出版社,2016.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 系列 03 数据结构 向量 矩阵 多维 数组