【发布时间】:2018-05-07 18:52:20
【问题描述】:
我目前正在处理一个大型矩阵(4 列和大约 8000 行)。 我想使用构成该矩阵的不同行之间的 Pearson 相关系数进行相关分析。
我想按照以下方式进行:
求第 1 行和第 2 行之间的 Pearson 相关系数。然后在第 1 行和第 3 行之间……以此类推,其余行。
然后找到第 2 行和第 3 行之间的 Pearson 相关系数。然后在第 2 行和第 4 行之间……以此类推,其余行。注意我不会再找到第1行的系数了......
对于那些分别高于或低于 0.7 或 -0.7 的系数,我想在单独的文件中列出与这些系数相对应的行名以及系数。例如。: 第 230 行 - 第 5812 行 - 0.76
我为此目的编写了以下代码。不幸的是,它需要的运行时间太长(我估计差不多一个星期:()。
for (i in 1:7999) {
print("Analyzing row:")
print(i)
for (j in (i+1):8000) {
value<- cor(alpha1k[i,],alpha1k[j,],use = "everything",method = "pearson")
if(value>0.7 | value<(-0.7)){
aristi <- c(row.names(alpha1k)[i],row.names(alpha1k)[j],value)
arist1p<-rbind(arist1p,aristi)
}
}
那么我的问题是是否有任何方法可以让我更快地做到这一点。我阅读了有关并行进行这些计算的信息,但我不知道如何进行这项工作。我希望我已经足够清楚了,提前谢谢你!
【问题讨论】:
-
如果你使用
cor接受矩阵输入,你可以避免在循环中嵌套一层。 -
另外,不要循环增长对象。
标签: r