R中的行方向相关性

Jan*_*ary 2 r matrix correlation

我有两个相同大小的矩阵.我想计算这些矩阵中每对行之间的相关系数; 第1行,A行,第1行,A第2行,第2行,B等.

A <- matrix(runif(1:200), nrow=20)
B <- matrix(runif(1:200), nrow=20)
Run Code Online (Sandbox Code Playgroud)

我能想到的最好的是

ret <- sapply(1:20, function(i) cor(A[i,], B[i,]))
Run Code Online (Sandbox Code Playgroud)

但它非常低效(矩阵有数万行).有更好,更快的方式吗?

flo*_*del 6

这应该很快:

cA <- A - rowMeans(A)
cB <- B - rowMeans(B)
sA <- sqrt(rowMeans(cA^2))
sB <- sqrt(rowMeans(cB^2))

rowMeans(cA * cB) / (sA * sB)
Run Code Online (Sandbox Code Playgroud)