加快R

时间:2016-03-21 16:06:04

标签: r correlation

我有一个包含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。

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

1 个答案:

答案 0 :(得分:2)

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

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

检查函数的帮助文件,以获取当数据包含更多缺失观察值时版本之间差异的详细信息。