如何在 R 中使用 foreach 创建嵌套循环?

问题描述 投票:0回答:0

我没有设计出正确的代码来使用 foreach 运行嵌套循环。我正在使用一个巨大的数据集,所以这里需要并行化。

我需要在不放回的情况下随机抽取数据集的 1/4 样本 4 次(因此对整个数据集进行重新抽样),并计算每对变量的相关系数和 p 值 4 次。我一直在处理的代码如下,我的目标是输出看起来像这样的输出(对每个季度采样的每个输出进行 rbinding)。

     #from one of the quarters
      estimate  pvalue  Var1 Var2
      0.678     0.03    a     b
      0.754     0.04    a     b
      0.546     0.01    a     b
      0.567     0.03    a     b
     -0.234     0.14    a     c
     -0.321     0.34    a     c
     -0.456     0.43    a     c
     -0.456     0.52    a     c
      

      x <- colnames(df)
      df_use <- data.frame(t(combn(x,2)), stringsAsFactors=F)
      a <- 1/4 

    registerDoParallel(cl <- makeCluster(6))

 res <-
    foreach(i=1:4, .combine='rbind') %:%
     foreach(j=1:nrow(df_use) .combine=rbind, .packages=c("magrittrr", "dplyr")) %dopar% {
     df.2 = dplyr::sample_frac(df_use, a, replace = FALSE) 
     out.frac = broom::tidy(cor.test(df.2[j,1], df.2[j,2],
                       method = "spearman")) %>% 
         mutate(Var1=df.2[j,1], Var2=df.2[j,2])
  c(out.frac$estimate, out.frac$p.value, out.frac$Var1, out.frac$Var2)
   }

任何帮助或指导将不胜感激!

r foreach correlation
© www.soinside.com 2019 - 2024. All rights reserved.