我有一个包含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函数(用于根据相关性推断基因网络).在我的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
当数据包含更多缺失的观察值时,请检查函数的帮助文件以获取有关版本之间差异的详细信息.