来源:BV1td4y1r7mL 人话R语言教程
R多维数据类型简介
- 向量Vector:线性的数据类型
- 矩阵matrix:有行row和列column组成
- Data Frame/Table:直接用来处理统计学数据,每一列代指一个变量,一行代表了一个样本
- 阵列Array:可以理解为矩阵Matrix的扩展,一般来说用的比较少
- List:前面各种数据的组合形式
向量Vector
- 种类:3种,同基础数据类型,即numeric型,character型和logical型
Vector型变量的赋值
- 对Vector型变量赋值,需要构建函数,c(a,b,c,….),其中括号外面的c是不能改变的
- c(1:3)的效果和c(1,2,3)是一样的
- 混合使用”,”和”:”:比如c(1,8:20)的效果和c(1,8,9,…,19,20)是一样的
- 向量也可以通过混合变量来构建,比如c<-c(a,b)
- 判定vector的长度:length()函数
对vector型变量取值
- 变量名[ 要取的位数 ],其中方括号内可以是值,可以是numeric变量,可以是向量,也可以是另一个数值型vector变量
- 举例:
- 取一个值:d[3]或者d[a],其中a是一个简单
- 如果想取两个或以上,要在方括号内放向量,例如d[c(2,4)],不能d[2,4],因为d[2,4]是用来取matrix/dataframe格式的变量的
Vector的值的替换
- 举例:d<-(1,2,3,4),那么d[3]=3
- 如果想要替换一个值,那么可以令d[3] <- 6
- 如果想要替换两个或以上,同样地,要在方括号内放向量,后面的赋值也要对应地赋向量,例如d[c(1,2,4)] <- c(3,3,3),嵌套变量也是可以的,例如c <- c(1,2) d[c] <- c(1,2)
- 如果要判断嵌套的变量/函数的长度,可以使用length()函数,例如length(d[c]),输出的结果是2
- Vector通过logical取值
- 举例:d<-c(1,2,3,4)
- d[c(T,F,T,F)],这个函数会取出所有T的位数的值,替换值也是一样的道理
- 在使用logical对vector取值时,有特殊的要求,[]内的向量的长度,要和括号外的向量的length一样
矩阵Matrix
Matrix型变量的赋值
- 赋值使用的函数就是matrix本身,举例matrix1<-matrix(,…,,)
- 函数中要填入的第一个变量必须是一个vector,比如c(1:50)
- 然后需要指定第二个变量,是矩阵的行的数量,用nrow=一个数字来表示,比如nrow=5
- 第三个变量是可选的,byrow=TRUE或FALSE,默认为FALSE,也就是说如果byrow=true,那么数据是按照行递增的,例如下图2是没有byrow=False的,下图三byrow=True
- matrix也可以用含有vector的变量来赋值,比如a100<-(1:100),matrix3<-matrix(a100,nrow=10)
matrix型变量的取值
- 取一个值:变量[要取的行,要取的列],比如matrix1[1,2]
- 取同一行/列的n个值:变量[要取的n行/同一行,要取的n列/同一列]
- 当然,[]中的内容用对应种类的变量来替代是可以的
- 还可以用length函数看看能取出多少个值,以及用赋值的方式改变它们的值
- 取多行多列(取出来的也是个matrix),也可以替换,当然要用对应类型的值来替换,举例:matrix[1:3,2:3]<-matrix(c(1:6),nrow=3)
- 如果取值时我们在某一个区域不填写,则说明这个区域的全部都要,比如说matrix[,2:3],表示的含义是只要2-3列的内容
- 要确定一个matrix,或者从一个matrix中取出一个matrix的行,或者是列的数量,我们可以用nrow函数(行)和ncol函数(列),示例:nrow(matrix3[1:3,2:3]),nrow(matrix3[1:3,2:3])
- 如果要通过logic取值,那我们也需要通过构建和matrix的行,和/或列一样长的,由logical型变量组成的matrix,其中T表示取,F表示不取
matrix的运算
- 简单的:matrix的每个值都做一样的处理,比如matrix3+1,就是matrix中所有的值都+1,用”+””-“” * “”/“都是可以的
- matrix与vector相乘
- 对matrix的要求:ncol(matrix)=length vector
- 相乘的语法:matrix的第n行的每个值,都会乘上vector中的第n个值
- matrix与matrix之间的运算
- 要求:nrow(matrix1)=nrow(matrix2),ncol(matrix1)=ncol(matrix2)
- 求某一matrix中所有值的和:用sum()函数
- 求某一matrix中某一行/列的所有值的和:用apply()函数
- apply()函数语法:(matrix变量的名字,1/2,要做的操作)
- 1——对行操作;2——对列操作