加快R中的相关矩阵计算

vag*_*ond 5 r correlation

我有一个带有49个变量和4M行的数据框。我想计算49 x 49的相关矩阵。所有列都是类数字。

这是一个示例:

df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))
Run Code Online (Sandbox Code Playgroud)

我使用了标准cor功能。

cor_matrix <- cor(df, use = "pairwise.complete.obs")
Run Code Online (Sandbox Code Playgroud)

这需要很长时间。我有16GB RAM和一个i5单核2.60Ghz。

有没有办法使我的桌面上的计算速度更快?

Lor*_*z D 6

WGCNA 包中有一个更快版本的 cor 函数(用于基于相关性推断基因网络)。在我的带有 16 GB RAM 的 3.1 GHz i7 上,它可以以大约 20 倍的速度解决相同的 49 x 49 矩阵:

mat <- replicate(49, as.numeric(sample(0:50,4000000,rep=TRUE)))

system.time(
    cor_matrix <- cor(mat, use = "pairwise.complete.obs")
)
user  system elapsed 
40.391   0.017  40.396 

system.time(
    cor_matrix_w <- WGCNA::cor(mat, use = "pairwise.complete.obs")
)
user  system elapsed 
1.822   0.468   2.290 

all.equal(cor_matrix, cor_matrix_w)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

当您的数据包含更多缺失的观测值时,请查看该函数的帮助文件,了解有关版本之间差异的详细信息。