所以我试图找出这个功能的aperm()作用.当我这样做aperm(a),a矩阵在哪里,我得到它的转置; 我明白了.但是这个功能怎么样:
aperm(a,c(3,1:2))
Run Code Online (Sandbox Code Playgroud)
这是做什么的?when a是6*7矩阵时,此命令不起作用.
我也不理解R的例子.
您收到错误是因为您要告知aperm置换3维数组,但只提供2维数组(矩阵).您需要一个三维数组才能使命令工作:
请考虑以下示例:
myarray <- array( 1:24, dim=c(2,3,4),
dimnames=list(One=c('a','b'), Two=c('A','B','C'), Three=1:4) )
myarray
aperm(myarray, c(3,1,2))
Run Code Online (Sandbox Code Playgroud)
这会创建一个带有dimnames的三维数组,以帮助使其更清晰,然后置换它.注意值的新顺序.
这个例子也是:
> myarray[2,3,4]
[1] 24
>
> mynewarray <- aperm(myarray, c(3,1,2) )
> mynewarray[4,2,3]
[1] 24
>
Run Code Online (Sandbox Code Playgroud)
要在原始数组中获取值为24的元素,我们将获取第4层第3列的第2行(或者您想要称为第3维的任何内容).
但是在置换数组中,它现在是第3层(以前是列)的第2列(以前是行)的第4行(以前是行).