[英]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.