R语言中的多维数组、矩阵、列表、数据框
程序员文章站
2022-05-12 19:10:02
在R中,数组(Arrary)可以看做是带多个下标的相同类型的元素集合,常用的是数值型的数组如矩阵,也可以是别的类型的数组,比如字符型,逻辑型等。
Dim属性是数组中很重要的属性,也叫维数向量...
在R中,数组(Arrary)可以看做是带多个下标的相同类型的元素集合,常用的是数值型的数组如矩阵,也可以是别的类型的数组,比如字符型,逻辑型等。
Dim属性是数组中很重要的属性,也叫维数向量,当维数向量有两个值时代表为矩阵,有一个值时代表为一维数组。
#使用向量生成数组或者矩阵 c<-1:12 c # [1] 1 2 3 4 5 6 7 8 9 10 11 12 dim(c)<-c(3,4) c # [,1] [,2] [,3] [,4] # [1,] 1 4 7 10 # [2,] 2 5 8 11 # [3,] 3 6 9 12 dim(c)<-12 c # [1] 1 2 3 4 5 6 7 8 9 10 11 12 class(c) # [1] "array" #使用Arrary来生成数组a arrary (data,dim=length(data)) a<-array(1:12,dim=c(3,4)) a # [,1] [,2] [,3] [,4] # [1,] 1 4 7 10 # [2,] 2 5 8 11 # [3,] 3 6 9 12 #使用matrix来构造矩阵(二维数组)matrix(data,nrow=,ncol=,byrow=True) a<-matrix(1:12,3,4) #构建一个3行4列的矩阵 a #数组下标的使用 #数组可以通过1、精确指定下标2、以空值代表所有下标, 3、以向量形式指出下标 4、通过数组形式指出下标 a<-1:24 dim(a)<-c(2,3,4) #定义一个三维数组 a[1,2,3] # [1] 15 a[,,3] # [,1] [,2] [,3] # [1,] 13 15 17 # [2,] 14 16 18 a[,2:3,1:2] # , , 1 # # [,1] [,2] # [1,] 3 5 # [2,] 4 6 # # , , 2 # # [,1] [,2] # [1,] 9 11 # [2,] 10 12 #在不改变数组维度的情况下,将其赋值为0 a[]<-0 a #也可以用其它数组的值来表示该数组的下标 b<-matrix(c(1,1,1,2,2,3,1,3,4,2,1,4),nrow = 3,ncol = 3) b # [,1] [,2] [,3] # [1,] 1 2 1 # [2,] 1 2 3 # [3,] 1 3 4 a[b] # [1] 3 15 23 #同样的我们还可以对其进行赋值运算 a[b]<-0 # a # , , 1 # # [,1] [,2] [,3] # [1,] 1 0 5 # [2,] 2 4 6 # # , , 2 # # [,1] [,2] [,3] # [1,] 7 9 11 # [2,] 8 10 12 # # , , 3 # # [,1] [,2] [,3] # [1,] 13 0 17 # [2,] 14 16 18 # # , , 4 # # [,1] [,2] [,3] # [1,] 19 21 0 # [2,] 20 22 24 #数组和矩阵的四则运算是对应元素之间的运算,一般是结构相同才能运算 #数组和矩阵运算时,是对矩阵的列运算,不匹配时,一般会有警告 #apply函数 apply(A,margin,fun) #a代表矩阵,margin=1 代表按行进行fun函数,=2代表按列进行fun函数 a<-1:6 dim(a)<-c(2,3) a # [,1] [,2] [,3] # [1,] 1 3 5 # [2,] 2 4 6 apply(a,1,sum) # [1] 9 12 #矩阵的运算包含转置、求特征向量、特征根等,笔者用到的不多,以后再总结