所以我试图找出这个函数aperm()
的作用。当我aperm(a)
时,a
是一个矩阵,我得到它的转置;我明白了。但是这个功能怎么样:
aperm(a,c(3,1:2))
这是做什么的?当a
是6 * 7矩阵时,此命令不起作用。
我也不理解R的例子。
答案 0 :(得分:5)
您收到错误是因为您告诉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))
这会创建一个带有dimnames的三维数组,以帮助使其更清晰,然后置换它。注意值的新顺序。
也是这个例子:
> myarray[2,3,4]
[1] 24
>
> mynewarray <- aperm(myarray, c(3,1,2) )
> mynewarray[4,2,3]
[1] 24
>
要在原始数组中获取值为24的元素,我们将获取第4层第3列的第2行(或者您想要称为第3维的任何内容)。
但是在置换数组中,它现在是第3层(曾经是列)的第2列(以前是行)的第4行(以前是图层)。