两个嵌套的Foreach循环,大数据帧内存不足

时间:2016-03-29 22:37:37

标签: r foreach out-of-memory

我是R.的新手。我有两个数据帧(df_A(20000个,500个变量)和df_B(40000个,500个变量)。我正在使用wto嵌套的foreach循环执行cor.test。是行:

  numCores <- detectCores()  
  cl <- makeCluster(20)  
  registerDoParallel(cl)

ptm = proc.time()
results <- foreach(i=1:nrow(df_A), .combine = 'rbind', .packages="foreach") %dopar% {
  foreach(j=1:nrow(df_B), .combine='rbind', .packages="foreach") %do%{
    myTest = cor.test(as.numeric(unlist(df_A[i,])),as.numeric(unlist(df_B[j,])),method="pearson")}}
print(proc.time() - ptm)
stopCluster(cl)

对于较小的data.frames似乎工作得很好,但是这两个大型data.frames内存不足。 我已经尝试解决这个问题很长一段时间了,但我的大脑被烧了。我带来了两种可能的解决方案,如果可能的话,我不会这样做:

1)只向我感兴趣的两列(p.value和estimate)发送“结果”(cor.test为每个相关性分析产生9列,这应该消耗内存)。

2)每X次迭代以块的形式发送结果文件。

我不知道这些解决方案是如何或是否可行。我会赞美任何想法!!

0 个答案:

没有答案