之后我需要创建一个按行,从左到右和后代排序的3D数组。由R中的行填充的3D数组从左到右排序,在后裔
x <- 100
我已经试过这一点:
b <- array(1:96, dim= c(8,4,3))
但它首先排序descendently。使用apperm(b)不工作,以及
我想结果是这样的:
, , 1
1 2 3 4 5
6 7 8 9 10
11 12 13 14
15 16 17 18
19 20 21 22
之后我需要创建一个按行,从左到右和后代排序的3D数组。由R中的行填充的3D数组从左到右排序,在后裔
x <- 100
我已经试过这一点:
b <- array(1:96, dim= c(8,4,3))
但它首先排序descendently。使用apperm(b)不工作,以及
我想结果是这样的:
, , 1
1 2 3 4 5
6 7 8 9 10
11 12 13 14
15 16 17 18
19 20 21 22
array
默认填充值沿着第一维度,那么第二尺寸,然后第三;你所寻找的是填补它的(第2,第1,第3)的顺序,你可以用第一维和第二维形状数组初始化切换,然后在其上使用aperm
:
b <- aperm(array(1:96, dim= c(4,8,3)), c(2,1,3))
# ^^ ^^ switch the dimension twice here
b
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
编辑:我第一次尝试,但@ Psidom的回答是这样做的正确方法。
您需要将它作为3个矩阵的组合,然后将它们组合成一个数组。在下面的代码中,我使用了96*i/3
来使它对3个以上的矩阵进行灵活组合。
b <- array(c(aperm(array(1:(96*1/3), dim = c(4,8))) ,
aperm(array(33:(96*2/3), dim = c(4,8))),
aperm(array(65:(96*3/3), dim = c(4,8)))) ,
dim = c(8 , 4 , 3))
这将是输出:
b[, , 1]
# [,1] [,2] [,3] [,4]
# [1,] 1 2 3 4
# [2,] 5 6 7 8
# [3,] 9 10 11 12
# [4,] 13 14 15 16
# [5,] 17 18 19 20
# [6,] 21 22 23 24
# [7,] 25 26 27 28
# [8,] 29 30 31 32
https://stackoverflow.com/questions/31755233/r-fill-multidimensional-array-by-row – Masoud
他们使用apperm,但在这种情况下不起作用 –