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

这是一个示例:

df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))

我使用了标准的cor函数。
cor_matrix <- cor(df, use = "pairwise.complete.obs")

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

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

最佳答案

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

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

关于r - 加快R中的相关矩阵计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36136071/

10-12 19:51