R计算多维数组上的出现次数

时间:2015-05-17 21:33:07

标签: arrays r multidimensional-array

我在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)

有什么想法吗? 谢谢,伊利克

1 个答案:

答案 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