我有一个49个变量和4M行的数据。我要计算49x49的相关矩阵。所有列都是类数值的。
这是一个样本:
df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))
我使用了标准的cor
函数。
cor_matrix <- cor(df, use = "pairwise.complete.obs")
这需要很长时间。我有16 i5内存和一个i5单核2.60Ghz。
有没有办法使我的桌面上的计算速度更快?
发布于 2016-03-21 09:39:33
WGCNA包中有一个更快的cor函数版本(用于基于相关性的基因网络推断)。在我的3.1 GHz i7 w/ 16 GB内存上,它可以更快地解决相同的49x49矩阵(约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
当您的数据包含更多缺失的观察时,请查看该函数的帮助文件,以了解不同版本之间的差异。
https://stackoverflow.com/questions/36136071
复制相似问题