R语言学习笔记:矩阵与数组(array)

时间:2023-03-09 18:02:04
R语言学习笔记:矩阵与数组(array)
    • 元素可以保存在多个维度的对象中,数组存储的是多维数据元素,矩阵的是数组的特殊情况,它具有两维。

      • 创建数组的几种方法。

        • 1.

          > m<-c(45,23,66,77,33,44,56,12,78,23)
          > dim(m)<-c(2,5)
          > m
               [,1] [,2] [,3] [,4] [,5]
          [1,]   45   66   33   56   78
          [2,]   23   77   44   12   23

        • 2.

          > m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
          > m
               [,1] [,2] [,3] [,4] [,5]
          [1,]   45   66   33   56   78
          [2,]   23   77   44   12   23

        • 3.观察上面的结果,发现默认的是首先按照列排列出矩阵的,如何按照行排列呢??

          > m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=T)
          > m
               [,1] [,2] [,3] [,4] [,5]
          [1,]   45   23   66   77   33
          [2,]   44   56   12   78   23

      • 提取矩阵中的元素

        • > m[2,3]
          [1] 12
          > m[2,-1]#排除第一列
          [1] 56 12 78 23
          > m[-2,1]#排除第二行
          [1] 45

        • 取某列:

> m[,1]
[1] 45 44

        • 取某列,并且看它为矩阵:

> m[,1,drop=F]
     [,1]
[1,]   45
[2,]   44

        • cbind(),rbind()#按照列,行排列
        • 设置行列的名字:

> m<-matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
> rownames(m)<-c('row1','row2')
> colnames(m)<-c('c1','c2','c3','c4','c5')
> m
     c1 c2 c3 c4 c5
row1 45 66 33 56 78
row2 23 77 44 12 23
> m["row1",]
c1 c2 c3 c4 c5
45 66 33 56 78

    • 数组是矩阵的扩展,它可以扩展到两维以上。(其操作类似于矩阵)

      • > a<-array(1:24,dim=c(4,3,2))
        > a
        , , 1

        [,1] [,2] [,3]
        [1,]    1    5    9
        [2,]    2    6   10
        [3,]    3    7   11
        [4,]    4    8   12

        , , 2

        [,1] [,2] [,3]
        [1,]   13   17   21
        [2,]   14   18   22
        [3,]   15   19   23
        [4,]   16   20   24

        > a[1,3,2]
        [1] 21
        > a[1,-1,2]
        [1] 17 21