命令多维数组的“窗口”

时间:2017-06-13 23:36:28

标签: arrays r multidimensional-array

我是R的新手,这是我的第一个问题(如果提出的问题是错误的,请道歉)。

我想根据多维数组中“窗口”的列,相应地改变行的顺序。

这是一个简化的例子:

x1<-matrix(c(1,3,2,4), 2)
x1
       [,1] [,2]
[1,]    1    2
[2,]    3    4

x2<-matrix(c(7,5,8,6),2)
x2
       [,1] [,2]
[1,]    7    8
[2,]    5    6


x3<-array(c(x1,x2), dim = c(2,2,2))

然后我想重新安排数组的第一个“窗口”,使它像x4一样:

x4<-x1[order(x1[,1], decreasing = TRUE),]
x4
      [,1] [,2]
[1,]    3    4
[2,]    1    2

我怎样才能在数组中做到这一点? 另外,更改是否也会影响阵列中的所有其他“窗口”? 所以,最后,我将得到一个像这样的数组:

x3[,,1]

      [,1] [,2]
[1,]    3    4
[2,]    1    2


x3[,,2]

     [,1] [,2]
[1,]    5    6
[2,]    7    8 

非常感谢!

1 个答案:

答案 0 :(得分:0)

您正在尝试重新排序数组的行(第一维);它类似于重新排序矩阵的行,除了它是3d,因此您需要指定三个索引:

x3[order(x3[,2,1], decreasing = T),,]

#, , 1

#     [,1] [,2]
#[1,]    3    4
#[2,]    1    2

#, , 2

#     [,1] [,2]
#[1,]    5    6
#[2,]    7    8