【发布时间】:2018-08-05 09:32:11
【问题描述】:
我有两个三维数组 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')
}
}
有没有更好的方法使用 apply 的一些变体?
【问题讨论】:
-
R <- sapply(1:nx, function(i,j) cor(X[i,j,], Y[i,j,], use='complete.obs'), 1:ny)? -
如果你担心速度,cor函数比使用for慢得多
-
@Parfait 该结果的维度为 [nt*nt, nx]。
-
@Gilgamesh 你是对的。我原来的 for 循环比下面的 apply with abind 快。