订购数组

时间:2016-05-05 20:18:06

标签: r

我想从最大值到最小值来排序和转换每个楼层的数组(每个独立)的值,如下例所示:

#My array:
a1 <- array(c(1,-4,13,0,1,0,-17,12,14,9,-3,-3),dim = c(2,3,4))
a1
, , 1

      [,1] [,2] [,3]
[1,]    1   13    1
[2,]   -4    0    0

, , 2

     [,1] [,2] [,3]
[1,]  -17   14   -3
[2,]   12    9   -3

, , 3

     [,1] [,2] [,3]
[1,]    1   13    1
[2,]   -4    0    0

, , 4

      [,1] [,2] [,3]
[1,]  -17   14   -3
[2,]   12    9   -3

分为:

a2
, , 1

      [,1] [,2] [,3]
[1,]    2    1    2    #1FLOOR: 13 is the biggest --> (1); 1 is the second biggest --> (2); ecc...
[2,]    4    3    3

, , 2

     [,1] [,2] [,3]
[1,]    5    1    4    #2FLOOR: 14 is the biggest --> (1); 12 is the second biggest --> (2); ecc...
[2,]    2    3    4

, , 3  ecc...

例如,如果我这样做:

 a2[]<-factor(-a1)

它没有独立评估每个楼层,而是考虑整个阵列的等级值

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:4)

在第三维上使用apply(),并使用c()删除因子的属性。如果不以某种方式将因子强制转换为整数,则矩阵会自动强制转换为字符。

a1[] <- apply(a1, 3, function(x) c(factor(-x)))

提供更新后的a1

, , 1

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

, , 2

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

, , 3

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

, , 4

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