ich eine große Auswahl haben, ist dies ein replizierbar Beispiel:Dimension Funktion auf dem dritten Array anwenden
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
Ich möchte diese Funktion für jeden „Boden“ meiner Array (3. Dimension) anzuwenden:
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")
Dann, da das replizierbare Beispiel sehr klein ist. Ich kann die abschließende Arbeit des Kombinierens Matrizen leicht durch:
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
Ich brauche einen schnellen Weg, dies in meinem großen Array zu tun. Irgendwelche Hilfe? Danke.
Ich würde Ihr Array in eine data.table "schmelzen" und damit arbeiten. Sie können aber auch 'apply' verwenden. – Roland
Der anwendbare Weg: 'array (apply (-cube, 3, frank, ties.method =" dicht "), dim (cube)), aber ich würde nicht erwarten, dass es schnell ist. Ich denke Rolands Idee ist wahrscheinlich besser. – Frank