这并不完全清楚,但如果你想找到max
第三维的每个矩阵(这在技术上是正确的说法吗?),那么你需要apply
跨第三维使用。margin
下面的论点?apply
指出:
一个向量,给出函数将被应用的下标。例如,对于矩阵,1 表示行,2 表示列,c(1, 2) 表示行和列。
所以对于这个例子,你有一个 3D 数组,3
是第三维。所以...
t( apply( x , 3 , function(x) which( x == max(x) , arr.ind = TRUE ) ) )
[,1] [,2]
[1,] 3 4
[2,] 3 4
[3,] 3 4
它返回一个矩阵,其中每一行包含第三维的每个二维数组/矩阵的最大值的行和列索引。
如果你想要max
跨越所有维度,你可以使用这样which
的arr.ind
参数:
which( x==max(x,na.rm=T) , arr.ind = T )
dim1 dim2 dim3
[1,] 3 4 2
这告诉我们max
值是第三行第四列第二个矩阵。
编辑
要在昏暗 3 处找到昏暗 1 和 2 上的值最大的位置,请尝试:
which.max( apply( x , 3 , max ) )
# [1] 2
这告诉我们,在第三维的位置 2 包含最大值。