在数组第三维上应用函数

时间:2016-09-01 15:13:42

标签: r

我有一个大型数组,这是一个可复制的例子:

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

我想将此功能应用于每个&#34; floor&#34;我的阵列(第三维):

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

我需要一种快速的方法在我的大型数组中执行此操作。有什么帮助吗?谢谢。

1 个答案:

答案 0 :(得分:0)

功能public func ==(l: [String: String], r: [String: String]) -> Bool { return true // just a stub } func setEquatable<T: Equatable>(v: T) { //... } let isEqual = ["1": "2"] == ["1": "2"] setEquatable(v: ["1": "2"]) 就是为此而制作的。第二个参数apply指定应用函数的维度。

MARGIN