【发布时间】:2019-05-14 10:07:07
【问题描述】:
我有数组a
dim (a)
[1] 126 59 240
我想每 12 步计算第三维的平均值。 我试过了:
rollapply(a,3,mean,by=12 )
但结果是长度为 11 的向量,仅此而已。
更好的是apply和具体的功能?
我的预期结果是一个带有dim 126 59 20的新数组
【问题讨论】:
我有数组a
dim (a)
[1] 126 59 240
我想每 12 步计算第三维的平均值。 我试过了:
rollapply(a,3,mean,by=12 )
但结果是长度为 11 的向量,仅此而已。
更好的是apply和具体的功能?
我的预期结果是一个带有dim 126 59 20的新数组
【问题讨论】:
绝对不简单,但它确实有效。
a = array(1:(126*59*240),c(126,59,240)) # Dummy data
s = seq(1,240,by=12) # Sequence of cutpoints for 3rd dim
aux =lapply(s,function(x){
apply(a[,,x:(x+11)],c(1,2),mean,na.rm=TRUE) # Get list with mean per each 12 3rd dim
})
aux2 = do.call(cbind,aux) # Bind all elements of list by column
Y = array(aux2,dim=c(dim(aux[[1]]),length(aux))) # Reconvert into array
> dim(Y)
[1] 126 59 20
【讨论】: