R语言中的多维数组、矩阵、列表、数据框

在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


#矩阵的运算包含转置、求特征向量、特征根等,笔者用到的不多,以后再总结

猜你喜欢

转载自blog.csdn.net/glodon_mr_chen/article/details/79886280