全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6295 2
2016-01-31
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



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-4-22 15:55:18
这个回答很到位,明白了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-4-22 14:44:55
谢谢解答!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群