gpt4 book ai didi

r - 在数组第三维上应用函数

转载 作者:行者123 更新时间:2023-12-04 09:30:27 24 4
gpt4 key购买 nike

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

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

我需要一种快速的方法来在我的大数组中做到这一点。有什么帮助吗?谢谢。

最佳答案

函数apply是为此而生的。第二个参数 MARGIN指定应用函数的维度。

res <- apply(-cube, 3, frank, ties.method = "dense")
## reshape:
array(res, dim=dim(cube))

关于r - 在数组第三维上应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com