计算R中两个多维数组之间的相关性数组

时间:2018-02-26 00:09:14

标签: arrays r apply

我有两个三维数组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')
  }
}

有没有更好的方法来使用一些申请变体?

1 个答案:

答案 0 :(得分:1)

使用abind我们可以将这两个数组合并为一个四维数组,然后在前两个维度中使用apply

library(abind)
apply(abind(X, Y, along = 4), 1:2, function(Z) cor(Z[, 1], Z[, 2]))