3
を関数を適用、私は、これは複製の例大規模な配列でいます配列三次元に
cube <- array(c(1:10,5:15,-5:+5,1:18), c(4, 4, 3))
cube
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 5 9 7
[2,] 2 6 10 8
[3,] 3 7 5 9
[4,] 4 8 6 10
, , 2
[,1] [,2] [,3] [,4]
[1,] 11 15 -2 2
[2,] 12 -5 -1 3
[3,] 13 -4 0 4
[4,] 14 -3 1 5
, , 3
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
私は私の配列(第3次元)の各「床」のために、この機能を適用したいと思います:
m1 <- cube[,,1]
m2 <- cube[,,2]
m3 <- cube[,,3]
library(data.table)
m1[] <- frank(-m1, ties.method = "dense")
m2[] <- frank(-m2, ties.method = "dense")
m3[] <- frank(-m3, ties.method = "dense")
次に、複製可能な例は非常に小さいためです。
z <- array(c(m1 , m2, m3) , dim = c(4 , 4 , 3))
z
, , 1
[,1] [,2] [,3] [,4]
[1,] 10 6 2 4
[2,] 9 5 1 3
[3,] 8 4 6 2
[4,] 7 3 5 1
, , 2
[,1] [,2] [,3] [,4]
[1,] 5 1 13 9
[2,] 4 16 12 8
[3,] 3 15 11 7
[4,] 2 14 10 6
, , 3
[,1] [,2] [,3] [,4]
[1,] 16 12 8 4
[2,] 15 11 7 3
[3,] 14 10 6 2
[4,] 13 9 5 1
私の大きな配列でこれを行うには、速い方法が必要です。どんな助け?ありがとう。
あなたの配列をdata.tableに ''溶かして、それを使って作業します。しかし、 'apply'も使うことができます。 – Roland
適用方法: 'array(apply(-cube、3、frank、ties.method =" dense ")、dim(cube))'しかし、私はそれが速くなるとは思わないでしょう。私はローランドの考えがおそらくもっと良いと思う。 – Frank