我没有设计出正确的代码来使用 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)
}
任何帮助或指导将不胜感激!