在R

在R,r,correlation,R,Correlation,我有一个包含49个变量和4M行的数据帧。我想计算49 x 49的相关矩阵。所有列均为数值类 以下是一个示例: df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE))) 这需要很长时间。我有16GB的RAM和一个i5单核2.60Ghz 有没有办法在我的桌面上加快计算速度?WGCNA软件包中有一个更快版本的cor函数(用于根据相关性推断基因网络)。在我的3.1 GHz i7 w/16 GB RAM上,它可以以大约20倍的速度求

我有一个包含49个变量和4M行的数据帧。我想计算49 x 49的相关矩阵。所有列均为数值类

以下是一个示例:

df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))
这需要很长时间。我有16GB的RAM和一个i5单核2.60Ghz


有没有办法在我的桌面上加快计算速度?

WGCNA软件包中有一个更快版本的cor函数(用于根据相关性推断基因网络)。在我的3.1 GHz i7 w/16 GB RAM上,它可以以大约20倍的速度求解相同的49 x 49矩阵:

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

mat您可以检查您的主要问题是
use=“pairwise.complete.obs”
。在我的系统上(使用12列进行测试),所需时间是
use=“everything”
的五倍。
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