我在R(lat,lon,time,variables)中有一个4维数组,我需要为每个变量计算每个网格点的值大于x的情况的数量(即,lat- lon组合)。 因此,结果应该是一系列N个映射(N =变量数)(即,lat-lon的2D数组),其值为整数,计算变量大于x的次数。 阵列尺寸为[60,185,8760,5]。 我尝试用tapply()玩,但无法理解。
一个可重复的例子:
MyArray = array(rnorm(72), dim=c(3,4,2,3))
x = 0.7
which(MyArray[,,,1]>x)
有什么想法吗? 谢谢,伊利克
答案 0 :(得分:2)
apply(MyArray,c(1,2,4),function(slice) sum(slice>x));
## , , 1
##
## [,1] [,2] [,3] [,4]
## [1,] 0 0 0 0
## [2,] 1 1 0 0
## [3,] 1 0 0 1
##
## , , 2
##
## [,1] [,2] [,3] [,4]
## [1,] 0 1 0 0
## [2,] 0 1 1 0
## [3,] 1 0 0 0
##
## , , 3
##
## [,1] [,2] [,3] [,4]
## [1,] 1 0 1 0
## [2,] 0 0 0 0
## [3,] 1 1 1 0