aperm函数是处理矩阵的一个函数,可以进行维、行、列进行转换,主要使用方法是aperm(X,c(1,2,3)),其中1表示行,2表示列,3表示维度,由于国内一些教材讲解不详细,这里详细的讲解一下,详见例子:
> d<-array(1:24,dim=c(2,3,4))
> d
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
上面构建一个维度为4,列为3列,每个矩阵行维2的阵。然后运用aperm函数:
> e<-aperm(d,c(2,3,1))#表示原来行的个数变成了维度的个数,即原来每个矩阵有两行,则现在维度是2;原来列是三列,现在变成行数为三行;原来维度为四,现在列的个数为四。aperm()中c()向量中第一个位置表示的是对行的调整,第二个位置表示对列的调整,第三个位置对维度的调整,如果对一维矩阵进行调整,则可以不用第三位置。见后面的例子。
> e
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 3 9 15 21
[3,] 5 11 17 23
, , 2
[,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24
这个例子是处理一维矩阵。
> f<-matrix(1:6,ncol=2)
> f
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> g<-aperm(f,c(2,1))#表示对矩阵进行变换,即原来矩阵列为2,现在变成行为两行;原来行是3行,现在变为列是三行。这样就和转置矩阵t()的效果一样。
> g
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6