繁体   English   中英

在r中向量和矩阵之间转换相关性的最快方法是什么?

[英]What is the fastest way to convert correlation between a vector and a matrix in r?

我试图找到一种快速的方法来计算值向量和矩阵之间的相关性。 转置数据后,我有一个具有200行和40万观察值的数据框。 我需要在每列和每隔一列之间找到cor。

我的代码在下面,但是太慢了。 任何人都可以提出更快的方法。

for(i in 1:400000){
      x=cor(trainDataNew[,i],trainDataNew[,-i])
}

您不需要我的数据即可执行此操作。 您可以创建如下所示的随机数据。

norm1 <- rnorm(1000)
norm2 <- rnorm(1000)
norm3 <- rnorm(1000)
as.data.frame(cbind(norm1,norm2,norm3))

怎么了

cc <- cor(trainDataNew)

如果您只想要下部三角形,则可以使用

cc2 <- cc[lower.tri(cc,diag=FALSE)]

这篇博客文章声称在大约一分钟内完成了一个类似大小(略小)的问题。 他们的方法在HiClimR::fastCor

library(HiClimR)
system.time(cc <- fastCor(dd, nSplit = 10, 
        upperTri = TRUE, verbose = TRUE,
        optBLAS=TRUE))

我还没有开始工作(请保持内存不足),但是您可能会遇到更好的运气。 您还应该考虑将R链接到优化的BLAS,例如, 在此处参阅MacOS。

此处有人报告了并行化版本(代码在此处 ,以及一些分叉的版本)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM