我有两个三维数组X [nx,ny,nt]和Y [nx,ny,nt]。我想计算一个相关矩阵R,使得Rij = cor(Xij,Yij)。
我可以通过嵌套for循环来做到这一点:
for (i in 1:nx) {
for (j in 1:ny) {
R[i,j] <- cor(X[i,j,], Y[i,j,], use='complete.obs')
}
}
有没有更好的方法来使用一些申请变体?
答案 0 :(得分:1)
使用abind
我们可以将这两个数组合并为一个四维数组,然后在前两个维度中使用apply
:
library(abind)
apply(abind(X, Y, along = 4), 1:2, function(Z) cor(Z[, 1], Z[, 2]))