Arrays R-重排列阵列

Arrays R-重排列阵列,arrays,r,Arrays,R,我道歉,因为我不知道是否有具体的方法来问这个问题。 为了简化一切,我有以下数组: set.seed(4) data <- array(rexp(12), dim=c(3,2,2)) , , 1 [,1] [,2] [1,] 0.1716006 0.8026470 [2,] 4.3039449 0.6271484 [3,] 0.8681056 0.7348583 , , 2 [,1] [,2] [1,] 0.448811

我道歉,因为我不知道是否有具体的方法来问这个问题。 为了简化一切,我有以下数组:

set.seed(4)
data <- array(rexp(12), dim=c(3,2,2))

 , , 1

          [,1]      [,2]
[1,] 0.1716006 0.8026470
[2,] 4.3039449 0.6271484
[3,] 0.8681056 0.7348583

, , 2

           [,1]      [,2]
[1,] 0.44881179 0.8371497
[2,] 0.05069988 2.6802979
[3,] 0.50935005 0.2880769
我希望使用for循环来实现这一点,因为我的数组有[633333,12]维,但欢迎使用任何东西。

这行得通吗

apply(data,3,c)

一个选项可以是使用
数据的第三维作为:

sapply(1:dim(data)[3],function(x)t(data[,,x]))

#           [,1]       [,2]
# [1,] 0.1716006 0.44881179
# [2,] 0.8026470 0.83714966
# [3,] 4.3039449 0.05069988
# [4,] 0.6271484 2.68029789
# [5,] 0.8681056 0.50935005
# [6,] 0.7348583 0.28807690

我们可以使用
aperm
来排列
数据
,在这里我们更改数组的第一维度和第二维度:

data <- aperm(data, perm = c(2, 1, 3))
data
#, , 1
#
#     [,1]      [,2]      [,3]
#[1,] 0.1716006 4.3039449 0.8681056
#[2,] 0.8026470 0.6271484 0.7348583
#
#, , 2
#
#          [,1]       [,2]      [,3]
#[1,] 0.4488118 0.05069988 0.5093501
#[2,] 0.8371497 2.68029789 0.2880769
数据关闭
apply(data,3,t)
我想如果你想得到与@MKR的答案相同的结果(这与OP在问题中要求的不完全一样,但被接受了)
data <- aperm(data, perm = c(2, 1, 3))
data
#, , 1
#
#     [,1]      [,2]      [,3]
#[1,] 0.1716006 4.3039449 0.8681056
#[2,] 0.8026470 0.6271484 0.7348583
#
#, , 2
#
#          [,1]       [,2]      [,3]
#[1,] 0.4488118 0.05069988 0.5093501
#[2,] 0.8371497 2.68029789 0.2880769
dim(data) <- c(1, 6, 2)
data
#, , 1
#
#          [,1]     [,2]     [,3]      [,4]      [,5]      [,6]
#[1,] 0.1716006 0.802647 4.303945 0.6271484 0.8681056 0.7348583
#
#, , 2
#
#          [,1]      [,2]       [,3]     [,4]      [,5]      [,6]
#[1,] 0.4488118 0.8371497 0.05069988 2.680298 0.5093501 0.2880769